Apache - httpd.conf |
|
Apacheの設定ファイル(httpd.conf)の設定 |
・常識的な設定 | |
動作ユーザー権限・VirtualHost等の設定。 最適化・高速化には関係ないので省略。 | |
・遅い・ハングアップしたクライアント対策 | |
Timeoutの値をかなり小さく(今回は30)する。 | |
・HTTP/1.1を利用してコネクション要求を減らす | |
KeepAlive を On にする。 これで、HTTP/1.1のKeep-Aliveが有効になる。 MaxKeepAliveRequests をかなり大きな値(今回は200)にする。 1回のコネクションで有効なHTTPリクエストをおおきくできる。 KeepAliveTimeout を大きな値(今回は20)にする。 次のコネクションが来るまでの時間を長くする。 あまり長くしすぎると逆効果なので注意。 | |
・同時に通信できるクライアント数を増やす | |
MaxClients をかなり大きな値(今回は512)にする。 同時に通信できるクライアント(コネクション)の数が増える。 基本的には多ければ多い方が良いが、あまり大きくしすぎると、メモリーからあふれて、スワップされてしまい逆効果。 少しずつ大きくして、スワップしない最適な値を調べるのが良いです。 | |
・DNSの検索をやめる | |
HostnameLookups を Off にする。 これにより、基本的にはDNSの検索が起こらなくなる。 ただし、一部CGIが動作しない場合があるので注意。(簡単に直せますが) | |
・ディレクトリーインデックスでのファイルタイプ検索をやめる | |
IndexOptions FancyIndexingをコメントアウトする。 ほとんど効果はないけど、ディレクトリーインデックスを表示するときの負荷が減る。 | |
・CGIでのCPU・メモリー・プロセスの使用制限 | |
RLimitCPU 数値a 数値b プロセス当たりの秒数を設定。数値aがソフトリミット、数値bがハードリミット。 今回は都合により設定していない。 RLimitMEM 数値a 数値b プロセスあたりの使用可能バイトを設定。数値aがソフトリミット、数値bがハードリミット。 今回は16777216 16777216(16M)を使用。 RLimitNPROC 数値a 数値b ユーザあたりのプロセス数を設定。 今回は10 10を使用。 自分が試した限りでは、FreeBSDとLinuxでは挙動が違うようだ。 FreeBSDでは、「システム全体から見た」で適応されていて、Linuxでは、「Apacheから起動された」で適応されている気がする。 FreeBSDでsuexec無しでRLimitNPROCを設定したときに、/usr/sbin/sendmailを実行出来なくて困っていた記憶が。(Apacheのユーザーは10より大きい) 同様の設定でLinuxでは問題がなかった。 suexecを入れると、両者とも問題が無くなった(^^; あくまで、自分がそう思っているだけで、本当は違うのかもしれない。 |