API REST нашего приложения обслуживается Gunicorn ( не за Nginx), работающим на экземплярах AWS EC2 с типичной настройкой автоматического масштабирования / балансировки нагрузки. Тайм-аут простоя балансировщика нагрузки составляет 60 секунд, а таймер активности Gunicorn составляет 2 секунды. Мы видели спорадические 504 Gateway Timeout
ответы от этой конфигурации. Согласно Amazon Docs , это может быть связано с тем, что время ожидания активности сервера меньше, чем время ожидания простоя балансировщика нагрузки:
Причина 2: зарегистрированные экземпляры, закрывающие соединение с Elastic Load Balancing.
Решение 2. Включите настройки поддержания активности в экземплярах EC2 и установите для параметра времени ожидания значение, превышающее или равное настройкам времени простоя вашего балансировщика нагрузки.
С Nginx значение по умолчанию keepalive_timeout
составляет 75 секунд, что, очевидно, хорошо работает с настройками ELB по умолчанию. Тем не менее, документация Gunicorn рекомендует keepalive
установку в диапазоне 1-5 секунд.
Имеет ли смысл увеличить поддержку активности Gunicorn до 75 секунд, или есть веская причина оставить его ниже 5 секунд, даже если перед ним не используется обратный прокси-сервер?
источник