サーバハングアップの原因について調査する その2
前回のサーバハングアップの原因について調査する とは、別の角度から要因に迫ってみたいと思います。
前回ので大体朝方4時~5時くらいにかけてメモリが枯渇した状態になるというところは、確定したのですが
これって以前にあったのと似ています。これです。→ apacheの同時接続数(MaxClients)を検証する
アパッチの設定ファイルを変更して消費メモリ量を減らした記事ですが、こちらの原因もあるかもしれないということでerror_logを調べてみました。
[Sun Sep 18 04:21:43 2016] [error] server reached MaxClients setting, consider raising the MaxClients setting [Mon Sep 19 04:43:36 2016] [error] server reached MaxClients setting, consider raising the MaxClients setting
このようにやはりエラーが出ていました。 ただ、この時間にアクセス数がありパンクすることは考えにくいので、apacheのメモリリークが最有力かな?と
下記のサイトを参考に設定を変更してみました。
さくらVPSで一日6万PVを処理するためにしたこと—-新卒インフラエンジニア2年目
【トラブル】apacheがよく応答無しになるので調べてみました -その2(設定ファイル)- Linuxブログ
これによると MaxMemFreeを設定しておくとapache自体のプロセスがメモリを食いつぶすことがないように制限をかける設定のようです。
apache公式のドキュメントでは、
MaxMemFree
ディレクティブはfree()
が呼ばれない限り、 主アロケータが保持できる空のメモリの最大値をキロバイト単位で設定します。 設定されていないか、零に設定されているときは、無制限になります。
となっており引用文は、理解不能ですが(笑)どうやらメモリーリークしている人が設定をしてハングアップしなくなったとあるので私も設定を変更してみたいと思います。
早速設定変更します。
/etc/httpd/conf/httpd.confの設定変更
MaxRequestsPerChild 750 → MaxRequestsPerChild 4000
これは、比較的大きな数値にしておく方が多かったので・・・・
MaxMemFree 1024
これは、apacheの使用するメモリ数の上限を設定?だと思います。だいたいこの数値が多いのでこちらも他力本願で・・・(^^;
それと
KeepAlive On → KeepAlive Off
Onにしておくには、色々とほかの設定も見直さないといけないようです。
とりあえずOffにしてみました。
ということで下記のようになりました。(StartSeversとかも気持ち減らしてみました。)
httpd.conf
KeepAlive Off
StartServers 8 ← 10
MinSpareServers 5
MaxSpareServers 13 ← 15
ServerLimit 100
MaxClients 100
MaxRequestsPerChild 4000 ← 750
MaxMemFree 1024
この設定どこまで変わるかまた明日様子を見てみようと思います。
もしこれでうまくいくならばapacheのプロセスがそのまま生き残っておりそのままメモリを使い果たしてしまっていたのかもしれません。
あとは、crontabにTOPコマンドを仕込んでおきハングアップした時間のログを洗いなおすことぐらいでしょうか?
*****************************************************************************
にほんブログ村