いくつかのApache httpdプロセスのメモリとCPU使用率が高すぎるため、カーネルによって強制終了されますが、httpdがこのように多くのメモリを使用する理由がわかりません。分析する方法や再現する方法が必要です。
Apacheおよびsyslogに関するいくつかのメッセージ
Server version: Apache/2.2.34 (Unix)
Server built: Aug 17 2017 15:49:40
syslogメッセージ
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
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
これは、X個のメモリを割り当てる要求が失敗したことを意味します。したがって、KenrelはOOMキラーを呼び出し、メモリを最も消費するアプリケーションを終了させます。システムの物理メモリまたはスワップメモリが不足しています。一時的な修正として使用できるのは、より多くのRAM=モジュールまたは容量がサーバーに追加されるまで、スワップサイズを増やすことです。
また、Apacheモジュールとしてmpm_preforkを使用してApacheを構成した可能性があります。この設定は遅く、スレッドセーフではありません。最近のWebサーバー設定では、mpm_eventでApacheを使用しています。これにより、すべてのメモリを使い果たすことなく、パフォーマンスが向上します。