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