Я запускаю vsftpd 2.2.1 на машине Ubuntu 8.04 с довольно простой конфигурацией, и у меня возникла странная проблема с загрузкой на машину через FTP. Если я загружаю текстовые файлы, скорость передачи составляет около 70 КБ / с, если я загружаю двоичные данные (zip-файл и т. Д.), Скорость передачи примерно в 50 раз выше. Я использовал несколько разных клиентов в разных операционных системах, с разными размерами файлов и т. Д. Я пробовал передавать текстовые файлы как в двоичном, так и в ASCII режимах, и, похоже, ничего не изменилось. Кто-нибудь видел это раньше или имеет какое-либо представление, что может вызывать такое поведение?
Обновить: FTP-сервер находится в другой подсети, чем клиентские машины, с которыми я ранее тестировал, и между ними есть шлюз Linux, похоже, что проблема возникает только тогда, когда машины в другой подсети подключаются через шлюз к FTP-серверу. Когда машины в той же подсети, что и FTP-сервер, загружают текстовые файлы, проблем не возникает. Это все еще не имеет особого смысла, но, возможно, есть проблема с модулем ip_conntrack_ftp, используемым на шлюзе.
Обновить: Оказывается, кто-то установил Snort IDS на одной стороне шлюза, который разбивал FTP-пакеты примерно на барьеры новой строки, что вызывало задержку для текстовых файлов.
Возможно, преобразования конца строки в vsftpd были написаны неэффективно, и, поскольку чаще всего используется двоичный режим, никто не удосужился улучшить алгоритм, используемый в vsftpd.
Или может быть просто передача данных из сокета tcp на диск на самом деле намного быстрее, чем необходимость проверять каждый символ на CR и LF. Проверка может привести к задержке соединения, достаточной для снижения скорости передачи.
Вы проводите тесты локально в сети Ethernet (низкая задержка, может сильно повлиять дополнительная задержка) или через Интернет?