如何查看nginx进程的内存内容?

如何查看nginx进程的内存内容?

Nginx 1.20.1 服务器作为反向代理工作,消耗大量内存并导致服务停止,需要重新启动系统。ModSecurityNginx 上也配置了该库。

您可以在下图中看到,已建立的连接数保持在 200 左右不变,而第二张图显示内存不断增加,直至达到 100%。

Nginx 的资源消耗

top当我过滤命令的输出时COMMAND=nginx,我看到:

top - 16:31:18 up 1 day,  1:54,  2 users,  load average: 0.26, 0.57, 0.66
Tasks: 179 total,   2 running, 177 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.0 us,  0.2 sy,  0.0 ni, 93.4 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  12010.4 total,    184.6 free,   3818.6 used,   8007.3 buff/cache
MiB Swap:    975.0 total,    968.7 free,      6.3 used.   7858.8 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
26553 nginx     20   0 2624044   2.4g   9004 S   7.0  20.3   1:34.85 nginx
26554 nginx     20   0 2625580   2.4g   8932 S   0.7  20.4   0:18.12 nginx
26555 nginx     20   0 2627508   2.4g   8872 S   0.7  20.4   0:04.52 nginx
10284 root      20   0 2624568   2.4g   7772 S   0.0  20.3   0:29.08 nginx
26556 nginx     20   0 2624572   2.4g   8812 S   0.0  20.3   0:00.93 nginx

这是命令的输出pmap -d 26553

26553:   nginx: worker process
Address           Kbytes Mode  Offset           Device    Mapping
0000557a808e7000     164 r---- 0000000000000000 008:00001 nginx
0000557a80910000     824 r-x-- 0000000000029000 008:00001 nginx
0000557a809de000     204 r---- 00000000000f7000 008:00001 nginx
0000557a80a12000       8 r---- 000000000012a000 008:00001 nginx
0000557a80a14000     132 rw--- 000000000012c000 008:00001 nginx
0000557a80a35000     128 rw--- 0000000000000000 000:00000   [ anon ]
0000557a81b7c000  264740 rw--- 0000000000000000 000:00000   [ anon ]
0000557a91e05000 1965680 rw--- 0000000000000000 000:00000   [ anon ]
0000557b09da1000    1536 rw--- 0000000000000000 000:00000   [ anon ]
00007fefb919a000  292672 rwx-- 0000000000000000 000:00000   [ anon ]

我觉得 Nginx 在作为反向代理运行时消耗那么多内存是不正常的。该服务器有 4 个 vCPU 和 12GB 内存(直到上周它开始耗尽服务器并使其无响应时,内存才为 6GB)。但我不知道接下来该怎么做。

答案1

我的问题似乎与米哈尔256的帖子来自ModSecurity 内存泄漏链接由提供@AlexD。我为每个上下文加载了 modsecurity server。我已将其更改为级别http,并且已修复该问题。

事实证明,关于 modsecurity 的建议是正确的。自从进行此更改以来,服务器再也没有出现任何内存问题。我唯一需要做的更改是从上下文中删除几个modsecurity on;,并在上下文中仅添加一次。modsecurity_rules_fileserverhttp

谢谢,@AlexD

相关内容