Nginx 1.20.1 服务器作为反向代理工作,消耗大量内存并导致服务停止,需要重新启动系统。ModSecurityNginx 上也配置了该库。
您可以在下图中看到,已建立的连接数保持在 200 左右不变,而第二张图显示内存不断增加,直至达到 100%。
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_file
server
http
谢谢,@AlexD!