Apacheがメモリ足りなくて息しなくなったので、調べてみた。
運用してるサービスが、アクセスもそんなにないのに何か動きが遅い・・・
再起動させてみると、復活するが少し時間が経つとすぐにダメになる・・・
ということで、psコマンドで確認したところ、apache2さんが30個ぐらいプロセス立ち上げて合計90%ぐらいのメモリを占有してました。
現象としては、こちらの方と同じような感じでした。
Apacheの設定ファイルを見直す
<IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
まずはこれがデフォルト。
参考記事の一つ目を見て、apache2の1プロセスあたりのメモリ使用率を計算して、そこからMaxClientsの値を出しました。結果、256 -> 100 ぐらいに落としました(後で修正はしました)。
で、MaxMemFreeを1024に設定。
MaxMemFree ディレクティブは free() が呼ばれない限り、 主アロケータが保持できる空のメモリの最大値をキロバイト単位で設定します。 設定されていないか、零に設定されているときは、無制限になります。
結果的には、参考2個目のブログの方と同じような設定になりました
<IfModule prefork.c> StartServers 8 MinSpareServers 8 MaxSpareServers 8 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000 MaxMemFree 1024 </IfModule>
まだまだ様子見ですが、一旦はこんな感じで。