Назад | Перейти на главную страницу

Nginx / Gunicorn слишком долго не отвечает

У меня есть настройка приложения Django для обслуживания статических файлов через Nginx и восходящий поток, работающий через Gunicorn, для запуска приложения Django с базой данных PSQL, находящейся на выделенном сервере.
Проблема в том, что сайт слишком долго отвечает даже для домашней страницы, которая не требует обращения к базе данных.
Следует отметить одну важную деталь: когда я перезапускаю службу супервизора (которая отвечает за два процесса, один из которых является пушечным рогом, а другой - сельдереем), я получаю быстрые ответы максимум на 3 запроса.
После этих 3 запросов приложение снова перестает отвечать.

Что касается конфигурации, Nginx настроен с таймаутом (все 3: подключение, чтение и отправка), установленным на 300.
Gunicorn имеет такой же таймаут и настроен на выполнение 3 рабочих процессов.

Приложение работает на VPS с одним процессором и 1 ГБ памяти.
Ниже приведен вывод iostat для базовой статистики.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.49    0.00    0.44    0.03    3.21   94.83

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda              0.74         3.23        12.79    1023355    4054257'

Что могло быть причиной такого поведения?

Как упоминалось в комментариях Теро Килканена, оказывается, что проблема была в самом коде.

Я забивал сервер запросами, чтобы добиться некоторого подобия приложения реального времени, и это, в свою очередь, сделало весь сервер недоступным для обслуживания других запросов.
Просмотр статистики сервера не помог прояснить проблему, поскольку все показатели показали, что сервер доступен для работы.

Поэтому, если вы столкнулись с такой проблемой, просмотрите свои журналы Nginx на наличие нескольких запросов за короткий промежуток времени.