apacheチューニング

  • abコマンド
    • abコマンドはベンチマークを簡単に取るために用意されたツールです。

ab -n 100 -c 10 http://xxx.xxx.xxx.xxx/index.html

  • n テストで発行するリクエストの回数を数値で指定
  • c テストで同時に発行するリクエストの数を数値で指定
  • プロセス関連
    • Timeout【core】
      • リクエスト待ち時間。秒単位で指定する。デフォルトは300秒。
    • MPM
      • どのMPMが使われているかを調べる。

httpd -l (Unix系OSの場合)
httpd.exe -l (Winの場合)

    • StartServers【prefork,worker】
      • Apache 起動時に立ち上げるhttpdの数の設定。MinSpareServers と同一の値を設定しておくと良さそう。
    • MinSpareServers【worker】
      • あらかじめ待機させておく httpd の最少数。Apache は定期的に httpd の起動プロセス数を監視し、この値を下回っていた場合は自動的に httpd が起動される。
    • MaxSpareServers【worker】
      • あらかじめ待機させておく httpd の最大数。Apache は定期的に httpd の起動プロセス数を監視し、この値を上回っていた場合は自動的に httpd が停止される。
    • ThreadLimit【mpm_winnt,worker】
      • Apache プロセス稼働中における ThreadsPerChild に設定可能な上限値。デフォルト値は mpm_winnt のときは 1920 で、 他の場合は 64
    • ThreadsPerChild【mpm_winnt,worker】
      • Apacheが提供するWebページが同時に処理できるヒット数を指定する。mpm_winntでの ThreadsPerChild のデフォルト値は 64 で、他の場合は 25 。
    • MaxRequestsPerChild【mpm_winnt,prefork,worker】
      • MaxRequestsPerChild ディレクティブは、 個々の子サーバプロセスが扱うことのできるリクエストの制限数を設定します。MaxRequestsPerChild 個のリクエストの後に、子プロセスは終了します。 MaxRequestsPerChild が 0 に設定されている場合は、プロセスは期限切れにより終了することはありません。
      • mpm_netware と mpm_winnt でのデフォルト値は 0 です。
      • KeepAlive リクエストの場合は、 一つ目のリクエストだけがこの制限に該当します。 実効的には、一つの子プロセスあたりのコネクション数を 制限するように挙動が変化します。

マルチプロセスで動作させるApacheで、リクエストに
比例してプロセスを増大させてサーバのリソース食いつぶさないように上限を設ける
ためのもの、とかじゃないでしょうか。
あくまでプロセスの再生成は、ApacheやOSが落ちてしまってダウンタイムが長く
なってしまうための安全措置であって、これが起きたら設定の変更を検討する必要が
あるんじゃないかと思います。
MaxRequestsPerChild制限による子プロセスの再生成時のエラーについて

    • ThreadsPerChildとMaxRequestPerChild
      • こちらの説明が参考になります。
  • KeepAlive関連
    • KeepAlive[core]
      • On or Off HTTPのデフォルトの動作はリクエストのたびに新しい接続を作成するので、リクエスト単位でTCP接続のオープン/クローズを行うオーバーヘッドが発生する。KeepAliveを有効にすると、1つの接続で複数の要求を実現することが可能になり、TCP接続を確立するために費やす時間を削減できる。
    • KeepAliveTimeout[core]
      • 接続の持続を切断するまでの時間。デフォルトは15。20とすると、20秒間TCP接続が確保される。
    • MaxKeepAliveRequests[core]
      • 接続の持続させる(KeepAlive)最大リクエスト数。デフォルトは100。大きな値を設定すると一度に処理するリクエストの数が増えるが、他の接続が割り込むタイミングが遅れる。平均ファイル数+αの値を指定すると良いとされる。
    • 参考URL