サーバ/インフラを支える技術 第4章 性能向上、チューニング その2
今日は Apache のチューニングのはなし
- Apache 自体がボトルネックになることはあまりない
- 並列処理実装がモジュール化されている(MPM)
- prefork - プロセスを複数立ち上げる
- worker - プロセス+スレッド
- worker のほうがスケーラブルだけどマルチスレッドに対応していないモジュールがあったりするので prefork のほうが安定
- worker の性能的な優位性は主にコンテキストスイッチの軽量化
- httpd.conf の設定
- MaxClients - 同時接続クライアント数上限
- ServerLimit - prefork モデルのプロセス数上限
- fork したプロセス間の CoW で共有されるメモリ領域の容量を知る方法
- /proc/
/smaps
- /proc/
- fork したプロセス間の CoW で共有されるメモリ領域の容量を知る方法
- MaxRequestsPerChild
- プロセスがいくつのリクエストを処理したら再起動するか。CoW によるページ共有の効率を良くするため時々子プロセスを停止して再起動するのが良い
- ThreadLimit - プロセスあたりのスレッド数上限
- ThreadPerChild - 同上
- Keep-Alive
- ログに MaxClients に達したと出ても、原因は別のところにあることが多いので、原因をつきとめてそこを改善する
- Apache 以外の選択肢
既に Web サーバの選択肢の話題は古くなっているような気もしますね。今だと何がメジャーでしょうか。