Соединение с FTP-сервером Microsoft зависает при передаче тысяч файлов
1822
Dmitri Chubarov
Я вижу, что некоторые FTP-клиенты не могут завершить работу при передаче тысяч файлов на FTP-сервер. Команда mput *выполняется в течение нескольких часов, а затем зависает
150 Opening BINARY mode data connection.
У меня нет простого способа связаться с администраторами FTP-сервера (все, что у меня есть, - это IP-адрес в блоке, которым WeHostWebSites.Comя управляю, и я знаю, что этот IP-адрес совместно используется дюжиной доменных имен).
FTP-сервер представляет себя как
220 Microsoft FTP Service
Поэтому я предполагаю, что это IIS.
Я использую mput *каталог, который содержит тысячи файлов. До тех пор, пока передача не зависнет на некоторое время, пока контрольное соединение не закроется из-за неактивности.
Изучив логи, я вижу следующую картину. Первоначально файлы передаются в пассивном режиме.
Который запускает клиентов, таких как lukemftp(который поставляется по умолчанию при установке OpenSUSE 11) или плагин FTP-менеджера FAR (который популярен среди пользователей Windows), чтобы переключиться на активный, поэтому следующие передачи начинаются с PORTкоманды.
200 PORT command successful. 150 Opening BINARY mode data connection.
netstat -tтакже показывает, что новые подключения идут к порту 20 / tcp сервера. После передачи еще 3000+ файлов команда зависает. В этот момент выходной сигнал netstat -tпоказывает, как TIME_WAITсоединения истекают, а затем управляющее соединение закрывается из-за неактивности.
Обходнойlftp путь : часто предлагается использовать для больших передач FTP, и это оказалось решением проблемы. Наблюдая за lftpвыполнением mirror -Rкоманды в каталоге с более чем 100000 файлами, я вижу, как номера динамических портов достигают 65200, а затем продолжают с 49152, сохраняя все передачи в пассивном состоянии. Так что эта команда успешно завершена.
Есть ли способ обойти эту проблему без использования lftp(В частности, что можно сделать на чисто Windows-клиенте, который не имеет lftp?
Примечание. Этот вопрос был опубликован несколько месяцев назад на сайте http://serverfault.com, но не получил никаких ответов и недавнего закрытого голосования. Я решил удалить его из ServerFault и вместо этого поместить его в SuperUser.
1 ответ на вопрос
1
Martin Seitl
Is there a on access antivirus-software or continous backup software on the server? Maybe disabling it for testing purposes changes something.
Think of the following process:
put file from ftp-client to server
server opens stream to temporary file
antivirus-software or backup-software locks the (temporary) file for scanning or backup
while scanning the temporary file the ftp-server wants to move the finished file to its final location and name
since the file is locked at this moment the final operation could fail and throw an error.
Я предполагаю, что эта ошибка `move` будет как-то отражена в журнале сервера. Итак, главное, чтобы получить доступ к журналам сервера, верно?
Dmitri Chubarov 9 лет назад
0
да. обратитесь к журналу событий и ftp-журналу. Если вы еще этого не сделали, включите расширенную регистрацию для ftp-сервиса.
Martin Seitl 9 лет назад
0