В настоящее время я работаю над требованием, когда нам требуется загрузить файл размером 10 ГБ или более. В соответствии с требованием, в первую очередь, файл должен быть загружен на сервер. Затем его необходимо перенести на FTP-сервер. После того, как файл полностью передан на FTP-сервер. Необходимо вызвать почту.
Я выполнил все необходимые настройки конфигурации php и сервера для загрузки файла размером более 10 ГБ, и через IP-адрес хоста я могу успешно загрузить файл. Однако когда я загружаю тот же файл на тот же хост через балансировку нагрузки. Соединение, используемое для Тайм-аут. Как только файл передается на FTP-сервер.
После небольшого исследования я обнаружил, что балансировщик нагрузки истекает по тайм-ауту, когда скрипт php выполняет сервер, и требуется больше времени, когда сервер простаивает, и нет соединения TCP-соединения между балансировщиком нагрузки и сервером. В настоящее время идеальное время для Балансировщик нагрузки был установлен на 5 минут.
Скорее всего, эта проблема может быть решена. Если мы увеличим время ожидания балансировщика нагрузки. Но я не был бы подходящим решением.
В любом случае меня беспокоит то, что через PHP мы можем поддерживать соединение TCP между сервером и балансировщиком нагрузки?
Любое предложение будет оценено, поскольку я почесываю голову в течение 4 дней. И ваше предложение может спасти меня от облысения …
Это распространенная проблема из-за двухканального метода FTP. Если время ожидания составляет 5 минут, поддерживаемый рекомендуемый метод все еще увеличивает время ожидания. RFC5382 заявляет «.. большой тайм-аут простоя, мотивированный рекомендациями в [RFC1122], может уменьшить шансы отказаться от сеанса в реальном времени».
Опция 1 заключается в том, чтобы увеличить время простоя на одну минуту или столько, сколько требуется для передачи 10 ГБ ПРОСТО для этого виртуального сервера (при условии, что у вас есть 1 виртуальный сервер, прослушивающий порт 21 для этого приложения).
Вариант 2 Установите поддержку активности для BIG-IP на сервере, который короче тайм-аута профиля TCP. Это RFC? Будет ли это работать? Наверное. Они обычно используются для долгосрочных соединений (базы данных / мэйнфреймы), где неиспользуемые сеансы не должны прерываться часами. Это на самом деле не ваш сценарий, но сработает.
Я рекомендую просто увеличить время простоя до того количества, которое требуется для загрузки 10 ГБ. Если ваш виртуальный сервер обрабатывает трафик за пределами порта 21, вы можете изменить профили TCP через iRules, чтобы у вас был переменный тайм-аут простоя в зависимости от порта. Ниже приведен хороший пример вашего вопроса о сообществе F5 в DevCentral.
Других решений пока нет …