Налаштування Keepalive для Gunicorn позаду ELB без Nginx


15

API REST нашого додатку обслуговується Gunicorn ( не позаду Nginx), що працює на екземплярах AWS EC2 із типовою настройкою автоматичного масштабування / навантаження навантаження. Час очікування балансира навантаження становить 60 секунд, а час очікування роботи Gunicorn - 2 секунди. Ми бачили спорадичні 504 Gateway Timeoutвідповіді з цієї конфігурації. Згідно з документами Amazon , це може бути через те, що час очікування сервера в режимі очікування менше, ніж налаштування часу очікування балансира навантаження:

Причина 2: Зареєстровані випадки, що закривають з'єднання з Еластичним балансуванням навантаження.

Рішення 2: Увімкніть параметри зберігання в режимі EC2 і встановіть час очікування в режимі очікування більше або рівне налаштуванням тайм-ауту очікування вашого балансира навантаження.

У Nginx за замовчуванням keepalive_timeout75 секунд, що, очевидно, добре працює з налаштуваннями за замовчуванням ELB. Однак документи Gunicorn рекомендують keepaliveналаштування в межах 1-5 секунд.

Чи є сенс підстрибувати гунікорн до 75 секунд, чи є вагомі причини тримати його нижче 5 секунд, хоча ми не використовуємо зворотний проксі перед ним?

Відповіді:


16

Ви майже напевно захочете підняти таймер збереження режиму відповідно до рекомендації ELB, оскільки ELB повторно використовує з'єднання. Він утримуватиме їх доти, доки не закінчиться час очікування, і якщо інший запит надійде до ELB, він часто використовуватиме одне з уже відкритих з'єднань, щоб надіслати його вам.

504 Gateway Timeout це незвичайна помилка для цієї умови, але, здається, саме це повертається ELB, коли повторне використання з'єднання збігається з передчасним закриттям бек-енду.

5-секундна рекомендація може мати сенс, якщо веб-переглядачі спілкувалися з бек-ендом безпосередньо, але це не так з ELB, який сам по собі є правильним зворотним проксі-сервером при запуску в режимі HTTP.


Спасибі, це те, що я підозрював. Я спробую це змінити на цьому тижні і позначте вашу відповідь правильною, якщо все пройде гладко :)
handsofaten

Ми об'єднали зміни приблизно тиждень тому, і 504 роки стали набагато рідшими (пару разів на тиждень замість пари сотень разів на тиждень).
handsofaten
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.