apache httpd 进程被内核 oom 杀死

apache httpd 进程被内核 oom 杀死

一些 apache httpd 进程的内存和 CPU 使用率过高,被内核杀死,但我不知道为什么 httpd 使用了这么多内存。我需要一些方法来分析或一些方法来重现。

关于 apache 和 syslog 的一些消息

Server version: Apache/2.2.34 (Unix)
Server built:   Aug 17 2017 15:49:40

系统日志信息

Oct 19 15:28:20 kernel: httpd invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0, oom_score_adj=0

Oct 19 15:28:20  kernel: httpd cpuset=/ mems_allowed=0-1

Oct 19 15:28:20  kernel: Pid: 7446, comm: httpd Not tainted 2.6.32_1-12-0-0 #1

Oct 19 15:28:20  kernel: Call Trace:

Oct 19 15:28:20  kernel:  [<ffffffff8108acf6>] ? dump_header+0x7c/0x187

Oct 19 15:28:20  kernel:  [<ffffffff8108b24b>] ? oom_kill_process+0x6c/0x17b

Oct 19 15:28:20  kernel:  [<ffffffff8108b784>] ? out_of_memory+0x32e/0x392

Oct 19 15:28:20  kernel:  [<ffffffff8108f6ce>] ? __alloc_pages_nodemask+0x694/0x7ff

Oct 19 15:28:20  kernel:  [<ffffffff810b60ac>] ? alloc_pages_vma+0x136/0x152

Oct 19 15:28:20  kernel:  [<ffffffff8109f281>] ? handle_pte_fault+0x16f/0x6f0

Oct 19 15:28:20  kernel:  [<ffffffff810033ee>] ? apic_timer_interrupt+0xe/0x20

Oct 19 15:28:20  kernel:  [<ffffffff813c5f70>] ? do_page_fault+0x444/0x46b

Oct 19 15:28:20  kernel:  [<ffffffff810a7984>] ? do_mremap+0x338/0x450

Oct 19 15:28:20  kernel:  [<ffffffff813c389f>] ? page_fault+0x1f/0x30

httpd ps 图片

Out of memory: Kill process 7446 (httpd) score 422 or sacrifice child

Killed process 7446, UID 500, (httpd) total-vm:922728068kB, anon-rss:28228104kB, file-rss:88kB

答案1

这意味着分配 X 量内存的请求失败。因此 Kenrel 调用了 OOM 终止程序,它将终止内存消耗最高的应用程序。系统物理和/或交换内存不足。可以用作临时修复的方法是增加交换大小,直到为服务器添加更多 RAM 模块或容量。

此外,您很可能已将 mpm_prefork 配置为 Apache 模块。此设置速度慢且线程不安全。现代 Web 服务器设置使用带有 mpm_event 的 Apache。这将为您提供更好的性能,而不会耗尽所有内存。

相关内容