Amazon ELB не очищает соединения KeepAlive

Документация AWS упоминает следующее:

Чтобы гарантировать, что балансировщик нагрузки отвечает за закрытие подключения к вашему экземпляру, убедитесь, что значение, которое вы установили для Время поддержания активности HTTP больше, чем время ожидания простоя на вашем балансировщик нагрузки.

Я столкнулся с проблемой, когда мой ELB запускает ~ 40 запросов (js, css, img), в каждом из которых включен KeepAlive, он использует все мои рабочие потоки и блокирует их для KeepAliveTimeout (который я установил на быть выше, чем время ожидания ELB, как предлагается).

Однако ELB не закрывает соединения, когда страница завершает загрузку - они просто сидят и блокируют рабочие процессы, пока не истечет время ожидания.

Итак, я столкнулся с двумя вопросами:

  1. Почему ELB запускает 40 различных соединений, а не просто повторно использует одно и то же?
  2. Почему ELB не очищает соединения, когда это делается с ними?
1
задан 11 July 2017 в 20:05
1 ответ

Включаете ли вы закрепленные сеансы на уровне EC2 или на уровне ELB? Включена ли липкость? Какое время отмены регистрации? Включен ли слив соединения?

  1. ELB будет запускать новые сеансы, если закрепленные сеансы обычно не включены.
  2. Если вы включите закрепленные сеансы на ELB, вы ожидаете подключения на уровне ELB. Рекомендуется включить закрепленные сеансы на уровне EC2. В случае отказа экземпляров EC2 автоматическое масштабирование будет принудительно запускать новый экземпляр. Это устраняет «Что, если сеанс активен, но мой экземпляр EC2 умер?»

«Amazon ELB в настоящее время отключает постоянные подключения к сокетам через 60 секунд, если он не используется. Это условие будет проблемой для вариантов использования, которые создают большие файлы (PDF, отчеты) на серверной части EC2, отправляют их в качестве ответа и сохраняют соединения простаивают в течение всего процесса генерации "

0
ответ дан 4 December 2019 в 04:48

Теги

Похожие вопросы