Перейти к основному содержанию

Завис nginx — траблшутинг

Nginx

Пришла заявка на то, что один из Nginx серверов недоступен. Сама виртуальная машина работает, однако, замечаю, что она светится красным по CPU. В событиях есть ошибка:

 Alarm 'Virtual machine CPU usage' changed from Green to Red

nginx

Проблема возникла вчера в 18:13. Смотрим исторические значения CPU в Zabbix.

nginx

Проблема явно есть, здесь получаем более точное время проблемы. Это 18:04.

Открываю консоль KVM и вижу, что в STDERR есть записи о том, что nginx убит по OOM, и прочие сервисы типа redis тоже убиты по OOM.

Удаётся зайти на машину по SSH. Смотрим htop. Память свободна, но все процессы nginx в 100%.

nginx

Берем PID одного процесса и смотрим что он делает.

# strace -p 753985 -f -e trace=file,network
strace: Process 753985 attached

Ждём 10 минут, в терминале тишина. Значит процесс не делает никаких системных вызовов (файловых операций и сетевых), но при этом показывает 100% CPU в htop. Это классический признак бесконечного цикла в пользовательском пространстве — процесс крутится внутри кода nginx или модуля, не обращаясь к ядру.

Смотрим что было:

journalctl -u nginx --since "5 minutes ago" | grep -E "error|fatal|segfault|emerg|alert|panic|loop|timeout|deadlock|stuck"

Дальше анализируем логи. Ещё немного дебага, поищем повторяющиеся сообщения, которые могут символизировать о бесконечном цикле.  Видны ошибки, последняя в 19:04, потом ошибок не было, видимо, все процессы nginx попали в бесконечный цикл, а в самом цикле сообщений об ошибках не было.

Мой nginx использует сторонние модули LUA. Вероятно, проблема именно в одном из модулей. Данные траблшутинга отправляю разработчикам. Перезагружаю сервер.

nginx

Проблема ушла, сервер работает. Остальные ноды в кластере балансировщиков и так нормально работали, значит, ошибка какая-то специфическая и редкая. Дальше пусть разработчики разбираются.

Теги

 

Похожие материалы

Drupal 9 — установка на Nginx в Ubuntu 22

Сегодня мы с вами установим Drupal 9 на веб-сервер Nginx на сервере с операционной системой Ubuntu Server 22.04. Drupal 10 устанавливается аналогично, но сегодня мне нужна именно девятая версия. Погнали.

Теги