Проблема возникает после того, как служба работает непрерывно в течение примерно 4 дней.
Проблема
Примерно через 4 дня безотказной работы:
- Все запросы API внешнего интерфейса начинают завершаться сбоем по истечении 504 Gateway Timeout
- Django панель администратора продолжает работать нормально
- Рабочие процессы Gunicorn все еще работают (без сбоев)
- Перезапуска контейнера не происходит
- Загрузка ЦП низкая, а рабочие процессы кажутся бездействующими (, do_select)
Код: Выделить всё
ep_poll - Запросы никогда не выполняются (ответ не возвращается)
- Подключения к базе данных остаются работоспособными:
в режиме ожидания: 5–7 - активны: 1
- Сбоев рабочих процессов не обнаружено
- циклов перезапуска нет
- Код ответа: 000 (ответ HTTP не получен)
Конфигурация Gunicorn
Код: Выделить всё
gunicorn alloy_admin.wsgi:application
--workers 3
--threads 2
--timeout 120
--max-requests 1000
--max-requests-jitter 100
--keep-alive 5
Что может привести к тому, что установка Django + Gunicorn будет работать нормально в течение нескольких дней, а затем постепенно достигнет состояния, в котором все запросы API зависают и в конечном итоге возвращают 504, в то время как рабочие остаются живы и простаивают?
Это обычно вызвано:
- истощением потоков / насыщением рабочих?
- Блокировка синхронные вызовы внешнего API внутри представлений?
- Исчерпание пула соединений (DB/HTTP)?
- Проблемы с тайм-аутом Nginx/прокси?
- Или долговременные проблемы с памятью/состоянием в рабочих Gunicorn?
Мобильная версия