webサーバのチューニングのポイントをまとめておきます。
アクセスが多いシステムだと、
ソケットの開放が追い付かなくなって
ポートを使いきってしまいます。
⇒特にKeep Alive OFFのwebサーバなどRedHat系Linuxの場合、この待機時間はnet.ipv4.tcp_tw_reuse、
net.ipv4.tcp_fin_timeout
の値になります。(単位は秒)net.ipv4.tcp_tw_recycleを有効にすることで再利用を促進します。
オンラインで変更する場合、sysctlを使って調整します。
設定値の表示
設定値の書き換え
# sysctl -w net.ipv4.tcp_tw_reuse=1
# sysctl -w net.ipv4.tcp_tw_recycle=0
↑なんか勘違いしていた可能性があるので修正。現状では大きな問題は起きていないですが、tcp_tw_recycleはNATで問題が起きることがあるようなので最終手段です。
@2008/12/11追記
↑tcp_tw_recycleを1にすると問題が多くて地雷祭りなので、基本0にしておきます。
@2010/10/29追記
また、起動時に設定されるように
/etc/sysctl.conf
を編集して設定しておきましょう。
apache設定ファイルのTimeout値を小さくすることで調整します。
ただし、ファイルアップロードやMTの再構築のような時間のかかる処理のときに
タイムアウトになる可能性もあるので要注意です。
apache設定ファイルのMaxClients値とServerLimit値を大きくすることで調整します。
/etc/httpd/conf/httpd.confか、ソースインストールの場合はconf/extra/httpd-mpm.confに
設定があると思います。
また、伴ってファイルディスクリプタや、ユーザあたりの起動プロセスの上限を引き上げる必要があります。
CentOSの場合、
/etc/security/limits.conf
に設定を記載します。
apache hard nofile 12288
apache soft nproc 4096
apache hard nproc 4096
※システム上限値よりも大きくは設定できません
システム上限値
システム上限値は、上の項目と同様にsysctlコマンド・/etc/sysctl.confファイルで設定しましょう
apache設定ファイルのSetEnvIfもしくはSetEnvIfNoCaseを利用して、ログ出力を抑止してディスクI/O削減を図ります。
CustomLog logs/access.log combined env=!no_log