Что сообщает код 421
В протоколе FTP ответы сервера начинаются с трёхзначного кода. Коды, начинающиеся с четвёрки, означают временную неудачу: запрос сейчас выполнить нельзя, но позже он может получиться. Код 421 в стандарте описан как «сервис недоступен, управляющее соединение закрывается». Сервер сообщает об этом и сразу разрывает канал, поэтому клиент чаще всего видит короткую строку с кодом и обрыв.
Текст после кода зависит от конкретного сервера. Нередко в нём прямо написано «Too many connections from this IP» или «Timeout», а иногда только «Service not available». Именно текст помогает отличить причины друг от друга, поэтому в журнале клиента нужно смотреть полную строку, а не одну цифру.
Типичные причины: FTP 421
Первая по частоте: превышен лимит одновременных подключений. Многие серверы ограничивают число сессий на пользователя или на IP-адрес, а современные клиенты по умолчанию открывают несколько параллельных каналов для ускорения передачи. Несколько запущенных клиентов, синхронизирующих один каталог, легко упираются в этот потолок.
Вторая: таймаут неактивности. Если соединение простаивало, сервер закрывает его с кодом 421 при следующей команде. Третья: сервер перегружен или обслуживается, и новые сессии временно отклоняются. Четвёртая: сработала защита от перебора, и ваш адрес на время исключён. Пятая: ограничения, заданные хостинг-провайдером для аккаунта, включая общий лимит одновременных сессий на всех пользователей аккаунта.
Что проверить на своей стороне
Сначала закройте лишние сессии: остановите фоновые синхронизации, закройте второй экземпляр клиента, проверьте, не открыто ли то же подключение на другом компьютере. Затем в настройках клиента уменьшите число одновременных передач до одной или двух. Во многих клиентах это параметр лимита соединений или потоков в разделе передачи файлов.
Если ошибка возникает после пауз, включите в клиенте отправку команды поддержания связи (keepalive) или повторное подключение при обрыве. Проверьте режим соединения: иногда смена активного режима на пассивный меняет поведение, так как сервер по-разному считает каналы данных. Не забудьте, что у одной и той же сети наружу может выходить множество устройств через один общий адрес, и лимит сервера считается на него, а не на ваш компьютер.
Когда причина на стороне сервера
Если ошибка возникает при первом же подключении и с любого клиента, проверьте, работает ли сервис вообще: возможно, он перезагружается или остановлен. Тем, кто администрирует собственный сервер, стоит посмотреть его журнал: там будет указано, какой лимит сработал, и параметры вроде максимального числа клиентов и клиентов с одного адреса можно поднять.
Для арендованного хостинга обратитесь в поддержку и назовите время ошибки и ваш внешний адрес. Если защитное ПО временно ограничило доступ, они смогут снять блокировку. Также учитывайте, что при обслуживании сервер иногда намеренно отвечает 421, и остаётся только подождать.
Как избежать повторения
Настройте клиент разумно: один-два параллельных потока вместо десяти, ограниченное число повторных попыток с паузами между ними. Слишком частые повторные попытки создают впечатление перебора и могут вызвать временное исключение адреса.
Если вы передаёте много мелких файлов, эффективнее собрать их в архив и отправить одним файлом. Для автоматических задач добавьте задержку между запусками, чтобы предыдущая сессия успела закрыться. И если возможно, переходите на защищённые варианты протокола, SFTP или FTPS: они не отменяют лимиты, но обычно лучше поддерживаются современными клиентами и проще диагностируются.
Заметки о режимах и защищённых вариантах
Стоит помнить, что FTP использует два канала: управляющий и канал данных. Ответ 421 закрывает именно управляющий, и весь сеанс на этом заканчивается. Если после неудачи клиент не восстанавливает соединение сам, включите автоматическое переподключение и повтор прерванных операций.
Если вы администрируете сервер, обратите внимание на диапазон портов для пассивного режима: при слишком маленьком диапазоне параллельные передачи упираются в нехватку портов, и клиенты получают разнообразные ошибки, включая отказ в подключении. Ещё один полезный шаг: сравнить лимиты сервера с реальными потребностями. Для рабочих групп разумно задавать лимиты для каждого пользователя отдельно, а не только общий, чтобы один клиент с десятком потоков не вытеснял остальных.