Centos 6 上内存不足导致终止

Centos 6 上内存不足导致终止

在过去的几天里,我的 Centos 6 服务器经常出现内存不足的问题。

Aug  1 03:40:42 myserver xinetd[2304]: START: smtp pid=11222 from=87.109.36.82
Aug  1 03:40:46 myserver xinetd[2304]: EXIT: smtp status=1 pid=11222 duration=4(sec)
Aug  1 03:41:08 myserver xinetd[2304]: START: smtp pid=11224 from=189.174.169.28
Aug  1 03:41:19 myserver xinetd[2304]: EXIT: smtp status=0 pid=11224 duration=11(sec)
Aug  1 03:44:40 myserver xinetd[2304]: START: smtp pid=11240 from=109.230.244.236
Aug  1 03:44:40 myserver xinetd[2304]: EXIT: smtp status=0 pid=11240 duration=0(sec)
Aug  1 03:44:41 myserver xinetd[2304]: START: smtp pid=11241 from=109.230.244.236
Aug  1 03:44:41 myserver xinetd[2304]: EXIT: smtp status=0 pid=11241 duration=0(sec)
Aug  1 03:44:41 myserver xinetd[2304]: START: smtp pid=11242 from=109.230.244.236
Aug  1 03:44:41 myserver xinetd[2304]: EXIT: smtp status=0 pid=11242 duration=0(sec)
Aug  1 03:44:51 myserver xinetd[2304]: START: smtp pid=11243 from=113.22.231.187
Aug  1 03:44:56 myserver xinetd[2304]: EXIT: smtp status=1 pid=11243 duration=5(sec)
Aug  1 03:51:36 myserver kernel: postmaster invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Aug  1 03:51:36 myserver kernel:
Aug  1 03:51:36 myserver kernel: Call Trace:
Aug  1 03:51:36 myserver kernel:  [<ffffffff800c10bb>] out_of_memory+0x8e/0x2f5
Aug  1 03:51:36 myserver kernel:  [<ffffffff8000f275>] __alloc_pages+0x245/0x2ce
Aug  1 03:51:36 myserver kernel:  [<ffffffff80012970>] __do_page_cache_readahead+0x95/0x1d9
Aug  1 03:51:36 myserver kernel:  [<ffffffff800638fb>] __wait_on_bit_lock+0x5b/0x66
Aug  1 03:51:36 myserver kernel:  [<ffffffff8003f7d9>] __lock_page+0x5e/0x64
Aug  1 03:51:36 myserver kernel:  [<ffffffff8001330f>] filemap_nopage+0x148/0x322
Aug  1 03:51:36 myserver kernel:  [<ffffffff80008848>] __handle_mm_fault+0x1f8/0xe23
Aug  1 03:51:36 myserver kernel:  [<ffffffff8006686f>] do_page_fault+0x4cb/0x830
Aug  1 03:51:36 myserver kernel:  [<ffffffff8000e123>] free_pages_and_swap_cache+0x73/0x8f
Aug  1 03:51:36 myserver kernel:  [<ffffffff8005dde9>] error_exit+0x0/0x84
Aug  1 03:51:36 myserver kernel:
Aug  1 03:51:36 myserver kernel: Mem-info:
Aug  1 03:51:36 myserver kernel: Node 0 DMA per-cpu:
Aug  1 03:51:36 myserver kernel: cpu 0 hot: high 0, batch 1 used:0
Aug  1 03:51:36 myserver kernel: cpu 0 cold: high 0, batch 1 used:0
Aug  1 03:51:36 myserver kernel: cpu 1 hot: high 0, batch 1 used:0

另一个例子:

Aug  1 03:55:17 myserver xinetd[2304]: EXIT: smtp status=0 pid=11289 duration=36(sec)
Aug  1 03:55:21 myserver xinetd[2304]: START: smtp pid=11293 from=109.230.244.236
Aug  1 03:59:28 myserver kernel: qmail-remote invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0
Aug  1 03:59:28 myserver kernel:
Aug  1 03:59:28 myserver kernel: Call Trace:
Aug  1 03:59:28 myserver kernel:  [<ffffffff800c10bb>] out_of_memory+0x8e/0x2f5
Aug  1 03:59:28 myserver kernel:  [<ffffffff8000f275>] __alloc_pages+0x245/0x2ce

常规服务器内存使用率约为 30-40%。多年来,服务器一直非常稳定且“无故障”……是什么原因导致内存激增?这与 xinetd 有关吗?

在过去的几天里,我更新了 clamav,安装了 Comodo mod_security riules 和 maldet。我还安装了 clamd 作为新应用程序。

有什么建议吗?我该如何缩小问题范围?

谢谢

答案1

正如上面的回复中提到的,检查更新的包是第一步调试步骤,因为根据日志跟踪我们可以看到内核正在执行它的工作,即当所有系统内存(包括(RAM + Swap))都被占用时,将调用内存不足函数,并且系统直到内存被释放才会恢复正常运行。

您还可以选择配置 kdump 以及 vm.panic_on_oom = 1(/etc/sysctl.conf),这将生成 vmcore。您可以在此处找到有关它的更多信息http://people.redhat.com/anderson/crash_whitepaper/

相关内容