Балансировщик нагрузки сброса соединения при загрузке файлов размером более 10 ГБ

В настоящее время я работаю над требованием, когда нам требуется загрузить файл размером 10 ГБ или более. В соответствии с требованием, в первую очередь, файл должен быть загружен на сервер. Затем он должен быть перенесен на FTP-сервер. После того, как файл полностью передан на FTP-сервер. Нужно вызвать почту.

Я выполнил все необходимые настройки конфигурации php и сервера для загрузки файла размером более 10 ГБ, и через IP-адрес хоста я могу успешно загрузить файл. Однако когда я загружаю тот же файл на тот же хост через балансировку нагрузки. Соединение, используемое для Тайм-аут. Как только файл передается на FTP-сервер.

После небольшого исследования я обнаружил, что балансировщик нагрузки истекает по времени, как когда php-скрипт выполняет сервер, и требуется больше времени, когда сервер простаивает, и нет соединения по TCP-соединению между балансировщиком нагрузки и сервером. В настоящее время идеальное время для Балансировщик нагрузки был установлен на 5 минут.

Скорее всего, эта проблема может быть решена. Если мы увеличим время ожидания балансировщика нагрузки. Но я не был бы подходящим решением.

В любом случае меня беспокоит то, что через PHP мы можем поддерживать соединение TCP между сервером и балансировщиком нагрузки?

  • ВЕРСИЯ PHP - 5.6
  • APACHE 2.2
  • БАЛАНСЕР НАГРУЗКИ F5

Любое предложение будет оценено, поскольку я почесываю голову в течение 4 дней. И ваше предложение может спасти меня от облысения...

1 ответ

Решение

Это распространенная проблема из-за двухканального метода FTP. Если время ожидания составляет 5 минут, поддерживаемый рекомендуемый метод все еще увеличивает время ожидания. RFC5382 утверждает, что ".. большой тайм-аут простоя, мотивированный рекомендациями в [RFC1122], может снизить шансы на отказ от сеанса в реальном времени".

Вариант 1 состоит в том, чтобы увеличить время простоя на одну минуту или столько, сколько требуется для передачи 10 ГБ, ТОЛЬКО для этого виртуального сервера (при условии, что у вас есть 1 виртуальный сервер, прослушивающий порт 21 для этого приложения).

Вариант 2 Установите поддержку активности для BIG-IP на сервере, который короче тайм-аута профиля TCP. Это RFC? Будет ли это работать? Наверное. Они обычно используются для долгосрочных соединений (базы данных / мэйнфреймы), где неиспользуемые сеансы не должны прерываться часами. Это на самом деле не ваш сценарий, но сработает.

Я рекомендую просто увеличить время простоя до того количества, которое требуется для загрузки 10 ГБ. Если ваш виртуальный сервер обрабатывает трафик за пределами порта 21, вы можете изменить профили TCP через iRules, чтобы у вас был переменный тайм-аут простоя в зависимости от порта. Ниже приведен хороший пример вашего вопроса о сообществе F5 в DevCentral.

Тайм-аут IDLE и интервал Keepalive @ DevCentral

Другие вопросы по тегам