
ZabbixでURLレスポンスタイムを監視していて閾値を3秒にしているんですが
しばしば3秒以上の閾値超えアラートを検知していました。
絶対訪問者は少ないはずなのにおかしい。。。
以前 ↓ の対応もしたんですがApache自体のチューニングをさぼっていたので今回実施することにしました。
https://benbenbase.dip.jp/ememory/2017/11/19/593
1/18以降継続的に様子を見ながらチューニングしました。グラフを見てもわかるように3秒超えは減ってます。毎日0時頃は別の処理を走らせちゃってるので仕方ないかな。
Apacheのバージョンとかは秘密です。ですが、先輩達の記載を見ていると古いのかフォルダ構造とか違うもの多いですよね。
これまで面倒でApacheの設定はセキュリィ関連を最低限だけしていたような感じで放置していて
とりあえずPreforkで動いています。MPM Workerのが早いって聞くんですが、まぁいいや。
で、今回触ったのはApache2.config と mpm_prefork.config (mods-enabled から辿り着けます実体はAvailable側ですが)
それぞれのパラメーターの正確な定義は他のサイトで調べてもらえばわかると思うので私がしたことを書きます。
結果としては、タイムアウト値関連の設定が長すぎて、URL監視しにいった時に待たされてしまっていたんじゃないかと。。。
基本のチューニングは大事だと実感しました。
| TimeOut | デフォルトの5分は長すぎる。短くしました。 |
| KeepAlive | Onのまま |
| MaxKeepAliveRequests | 適度に設定。1ページ内で表示する最大ファイル数(画像とかね)+α |
| KeepAliveTimeout | 結構短くしました数秒レベルです。 |
| StartServers | デフォルトより増やしました。 |
| MinSpareServers | StartServersと同じ数 |
| MaxSpareServers | MinSpareServers + 10 |
| MaxRequestWorkers | 減らしました。topコマンドでApacheの各プロセスのRESとSHRを見た時の差が1プロセスあたりの消費メモリと考えて利用可能なメモリ量から逆算して設定 |
| MaxConnectionsPerChild | 有限にしました。ラズパイはCPUよりメモリ不足を心配したほうが良いので、メモリリークやゾンビプロセスを増やすよりCPUを使ってプロセスをリサイクルするほうが良いと考えました。 |
上述は一つの考え方なので、色々試しながらやってみるといいと思いますね。
本当はabとか使いながらチューニングしたほうがよいと思います。
