У нас работает сервер FTPS (FileZilla), и около сотни клиентов подключаются каждую ночь и загружают файлы размером от 20 до 100 МБ. Однако есть 1 или 2, которые, похоже, могут подключиться, загрузить весь файл, а затем клиент сообщает об ошибке (ошибка winsock 10038). Файл был успешно загружен. Я написал простой клиент для тестирования FTP, и оказалось, что небольшие файлы (10 МБ) работают нормально. Как только мы добираемся до 20 МБ, он начинает давать сбой. Я попытался увеличить тайм-аут на клиенте, но это, похоже, ничего не дает, кроме увеличения времени, которое требуется, прежде чем он сообщит о сбое.
Мы попросили их перезагрузить свой маршрутизатор и протестировать на нескольких машинах на их сайте, и проблема появляется на всех машинах (так что, похоже, она не связана с машиной). Мы также проверили, не работает ли на них какое-либо антивирусное программное обеспечение или брандмауэр.
Что еще более странно, иногда это удается - они могут загрузить файл, и он успешно завершается.
Опять же, клиент успешно подключается, может успешно загрузить весь файл, а затем он не работает.
Похоже, что они используют маршрутизатор Netgear (модель № пока отсутствует).
Есть идеи о том, что может быть причиной этого?
Это может быть сложнее, чем может показаться. Фактически, как вы можете прочитать в официальной документации MS, ошибка winsock 10038 означает, что «была предпринята попытка выполнить операцию с чем-то, что не является сокетом. Либо параметр дескриптора сокета не ссылался на действительный сокет, либо для select член fd_set недействителен ".
Вы можете использовать WireShark для сброса вашего TCP-трафика и посмотреть, что на самом деле происходит в конце передачи большого файла. Между прочим, 20 МБ не следует рассматривать как «передачу большого файла», на самом деле - в зависимости от того, какая «школа» вам больше нравится, большой файл - это либо файл больше 2 ГБ, либо больше 4 ГБ.
И последняя деталь: FileZilla не реализует протокол SFTP, вы, вероятно, имеете в виду FTPS (FTP через SSL / TLS).
Во-первых, сервер filezilla не может предоставлять SFTP, вы, вероятно, имеете в виду FTPS. Во-вторых, самый простой способ отладки этого - запустить tcpdump как на сервере, так и на клиенте, воспроизвести проблему и выполнить транзакцию, чтобы увидеть проблему.
Быстрый способ определить, является ли это проблемой с Filezilla, - это получить бесплатную пробную версию другого FTP-сервера, чтобы узнать, могут ли клиенты подключиться к нему. Авторитетные варианты включают предложения от Ipswitch, Titan, Globalscape или Cerberus. Тогда вы легко сможете увидеть, является ли это проблемой Filezilla.