Apache設定ファイルをチューニング
Apache + mod_perl の場合、httpd.conf でいろいろと気をつけるべき点があるのですが、まとめてみました。ちなみに本サーバの設定値は、
サーバスペックが Pentium 4 2.8GHz HT動作 / RAM 2GByte
な環境で、Amazon Search が喰うメモリは mod_perl 動作で 1 httpd あたり 10〜40MByte 程度。サーバライブラリがある条件下でメモリーリークするので、最大で httpd は 100Mbyte 程度まで肥大。
という条件下で
KeepAlive Off
Timeout 60
MinSpareServers 10
MaxSpareServers 10
StartServers 10
MaxClients 50
MaxRequestsPerChild 50
という設定値になっています。各パラメータの値の意味を説明しますと、
以上のパラメータを自分の環境に合わせて適宜設定することで、swap も発生させず最適なパフォーマンスを提供可能となる。いろいろと取得すべき値が多いので面倒ですが、是非試してみて下さい。
サーバスペックが Pentium 4 2.8GHz HT動作 / RAM 2GByte
な環境で、Amazon Search が喰うメモリは mod_perl 動作で 1 httpd あたり 10〜40MByte 程度。サーバライブラリがある条件下でメモリーリークするので、最大で httpd は 100Mbyte 程度まで肥大。
という条件下で
KeepAlive Off
Timeout 60
MinSpareServers 10
MaxSpareServers 10
StartServers 10
MaxClients 50
MaxRequestsPerChild 50
という設定値になっています。各パラメータの値の意味を説明しますと、
Timeout | リクエスト待ち時間。mod_perl で動作させたい CGI なら数秒で処理完了するハズなので、60
秒もあれば程度で十分 * GET リクエストを受け取るのにかかる総時間 * POST や PUTリクエストにおいて、次の TCP パケットが届くまでの待ち時間 * レスポンスを返す際、TCP の ACK が帰ってくるまでの時間 |
KeepAlive | mod_perl なら Off にする。mod_perl で http session を維持するのはNG。 |
MinSpareServers | あらかじめ待機させておく httpd の最少数。Apache は定期的に httpd の起動プロセス数を監視し、この値を下回っていた場合は自動的に httpd が起動される。 |
MaxSpareServers | あらかじめ待機させておく httpd の最大数。Apache は定期的に httpd の起動プロセス数を監視し、この値を上回っていた場合は自動的に httpd が停止される。 |
StartServers | Apache 起動時に立ち上げるhttpdの数の設定。MinSpareServers と同一の値を設定する。 |
MaxClients | 同時に起動できる httpd の総数。値の算出方法は、(実メモリ / Apache の最大メモリ消費量)で算出できる。 Apache の最大メモリ消費量は、MaxClients×子プロセスのメモリ消費量+親プロセスのメモリ消費量で算出できる。 子プロセスのメモリ消費量+親プロセスのメモリ消費量は、TOP コマンドで httpd の SIZE と SHARE の最大値を取得すれば良い。 ちなみに本サーバの場合、2G/(100M-40M) = 30 だが、いつもメモリ消費量が最大の 100M でもないので、50 という結果で値を設定している。 |
MaxRequestsPerChild | 各 httpd プロセスが処理できるリクエストの最大数を設定します。指定された数のリクエストを処理すると、httpd
プロセスは終了します。通常値は 0 でプロセスは限りなく動き続けるが、メモリーリーク等で
httpd が肥大する場合は、適宜 httpd プロセスを再生成させるために適切な値を設定する。 ちなみに本サーバの場合、50 リクエストほどで、httpd が 100M を超えるので、その時点でプロセス終了をさせている。 |
以上のパラメータを自分の環境に合わせて適宜設定することで、swap も発生させず最適なパフォーマンスを提供可能となる。いろいろと取得すべき値が多いので面倒ですが、是非試してみて下さい。
- スポンサーリンク -
- スポンサーリンク -
コメントやシェアをお願いします!