Рейтинг:1

Как я могу увидеть содержимое памяти процесса nginx?

флаг br

Сервер Nginx 1.20.1, работающий как обратный прокси-сервер, потребляет много памяти и заставляет службу перестать требовать перезагрузки системы. ModSecurity библиотека также настроена на Nginx.

На следующем графике вы можете видеть, что количество установленных соединений остается постоянным около 200, в то время как второй график показывает, что память постоянно увеличивается, пока не достигнет 100%.

Потребление ресурсов Nginx

Когда я фильтрую вывод вершина команда КОМАНДА=nginx Я понимаю:

топ - 16:31:18 вверх 1 день, 1:54, 2 пользователя, средняя загрузка: 0,26, 0,57, 0,66
Задания: 179 всего, 2 бегущих, 177 спящих, 0 остановленных, 0 зомби
%Cpu(s): 6,0 мкс, 0,2 си, 0,0 ни, 93,4 ид, 0,3 ва, 0,0 привет, 0,0 си, 0,0 ст
MiB Mem: всего 12010,4, 184,6 бесплатно, 3818,6 использовано, 8007,3 бафф/кэш
Обмен МиБ: всего 975,0, 968,7 бесплатно, 6,3 использовано. 7858.8 доступная память

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26553 nginx 20 0 2624044 2,4 г 9004 S 7,0 20,3 1:34,85 nginx
26554 nginx 20 0 2625580 2,4 г 8932 S 0,7 20,4 0:18,12 nginx
26555 nginx 20 0 2627508 2,4 г 8872 S 0,7 20,4 0:04,52 nginx
10284 root 20 0 2624568 2,4 г 7772 S 0,0 20,3 0:29,08 nginx
26556 nginx 20 0 2624572 2,4 г 8812 S 0,0 20,3 0:00,93 nginx

Вот результат pmap -d 26553 команда:

26553: nginx: рабочий процесс
Адрес Кбайты Режим Смещение Сопоставление устройств
0000557a808e7000 164 р---- 0000000000000000 008:00001 nginx
0000557a80910000 824 г-х-- 0000000000029000 008:00001 nginx
0000557a809de000 204 р---- 00000000000f7000 008:00001 nginx
0000557a80a12000 8 р---- 000000000012a000 008:00001 nginx
0000557a80a14000 132 RW--- 000000000012c000 008:00001 nginx
0000557a80a35000 128 rw--- 0000000000000000 000:00000 [анонимно]
0000557a81b7c000 264740 rw--- 0000000000000000 000:00000 [анонимно]
0000557a91e05000 1965680 rw--- 0000000000000000 000:00000 [ анон ]
0000557b09da1000 1536 rw--- 0000000000000000 000:00000 [анонимно]
00007fefb919a000 292672 rwx-- 0000000000000000 000:00000 [ анон ]

Я считаю, что для Nginx ненормально потреблять столько памяти при работе в качестве обратного прокси. Сервер имеет 4 виртуальных процессора и 12 ГБ памяти (было 6 ГБ до прошлой недели, когда он начал голодать и переставал отвечать на запросы). Но я не уверен, как действовать дальше.

флаг jp
покажите свою конфигурацию с помощью `nginx -T`.
Ronaldo avatar
флаг br
@AlexD, чтобы не загрязнять вопрос, я добавил его [здесь] (https://ideone.com/sQ25vU).
флаг jp
Главный подозреваемый, вероятно, mod_security. Если вы отключите его, у вас все еще будет такой же рост потребления памяти?
флаг jp
См. эту [проблему mod_security] (https://github.com/SpiderLabs/ModSecurity-nginx/issues/236)
Ronaldo avatar
флаг br
@AlexD Я еще не отключил mod_security, так как это основная причина, по которой у нас работает этот сервер.Я планирую сделать этот тест. И спасибо, что поделились ссылкой на утечку памяти, сейчас читаю и пытаюсь понять, была ли выпущена новая версия mod_security с тех пор, как я ее установил.
djdomi avatar
флаг za
не используйте никакие решения nopaste, добавляйте их прямо в вопрос, это улучшит качество вашего вопроса
Ronaldo avatar
флаг br
@AlexD кажется, моя проблема была связана с сообщением [Michal256] (https://github.com/SpiderLabs/ModSecurity-nginx/issues/236#issuecomment-759569912) по предоставленной вами ссылке. Я загружал modsecurity для каждого `сервера`. Я изменил его на уровень `http`, и, похоже, это было исправлено. Я буду наблюдать до конца недели, и если это подтвердит решение, я сообщу вам, чтобы вы могли написать ответ, который будет принят. Спасибо!
Ronaldo avatar
флаг br
С Новым годом, @AlexD. И еще раз спасибо, ваш совет о modsecurity оказался верным. За последнюю неделю на сервере не было проблем с памятью. Единственное изменение, которое мне пришлось сделать, это удалить несколько «modsecurity on» и «modsecurity_rules_file» из контекста сервера и добавить их только один раз в контексте http. Вы можете написать ответ, который будет принят!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.