チューニング, トラブルシューティング

Out of memory: Kill process xxxx (httpd) 対応

neko

環境

  • 2CPU
  • 8GB
  • LAMP
  • サイト数:20程度

 

Apacheのメモリが足りなくてOOMさんにぶった切られていた・・・!

# tail -n 10000 /var/log/messages

・・・

Apr  2 10:05:12 ip-172-32-3-252 kernel: [231010.642871] [15704]    48 15704   126988     5603     191       4        0             0 httpd
Apr  2 10:05:12 ip-172-32-3-252 kernel: [231010.660303] [15705]    48 15705   126988     5603     191       4        0             0 httpd

●OOM killer発動
Apr  2 10:05:12 ip-172-32-3-252 kernel: [231010.671708] Out of memory: Kill process 2502 (httpd) score 14 or sacrifice child
Apr  2 10:05:12 ip-172-32-3-252 kernel: [231010.680947] Killed process 2502 (httpd) total-vm:713292kB, anon-rss:115548kB, file-rss:0kB, shmem-rss:576kB
Apr  2 10:05:12 ip-172-32-3-252 kernel: [231010.706890] oom_reaper: reaped process 2502 (httpd), now anon-rss:0kB, file-rss:0kB, shmem-rss:576kB

●リブートの発生
Apr  2 11:14:24 ip-172-32-3-252 kernel: imklog 5.8.10, log source = /proc/kmsg started.
Apr  2 11:14:24 ip-172-32-3-252 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="2951" x-info="http://www.rsyslog.com"] start

 

最大のApacheプロセスを確認する

# ps aux | grep [h]ttpd | grep [a]pache | awk 'BEGIN{x=0}{x+=$6}END{ print x/NR }'
110752

だいたい110MB利用している、多い気がするな。1プロセス60~70MBぐらいが普通かな。

 

チューニング

 

 

LAMP環境のサーバで2CPU8GBだから

  • システム:1GB
  • MySQL:2GB
  • Apache:5GB

だいたいで計算する

5000/110 = 45.454 ≒ 45プロセス

 

/etc/httpd/httpd.conf

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

↓変更

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      45
MaxClients       45
MaxRequestsPerChild  300
</IfModule>

 

  • ServerLinmit, MaxClients
    45クライアントでエラーを発生させる
    少なすぎかもしれないがサーバ全体がダウンするよりマシ
  • MaxRequestsPerChild
    子プロセスが処理できる最大のリクエスト数、
    プロセス数が多すぎてダウンしたので300に減らしてすぐにプロセスを開放させる。

 

本当にしたいこと

  • ApacheからNginxに変更
  • サーバで動くサイト数が多すぎる
    →減らす
  • サーバスペックアップ(スケールアップ)
  • サーバスケールアウト
    バランサとか。

料金とかお客さんの要望とかあるのでこれらは難しいです、お客様の要望第一なので仕様がない。

とにかくサイト数、WEBアプリが多いし、ドキュメントがないので迂闊に構成変更が出来ない・・・。サーバを増やして少しずつこのサーバに載っているサイト数を減らす方向が良いと思う。

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)