- 2011/12/07 00:08
- Server
-
Tweet
Check
ApacheのMaxClientsの設定とその挙動、mod_proxyの設定との関係について、なんとなくの理解だったので、まとめてみた。
環境
- CentOS 5.6
- Apache 2.2.3
MaxClients
MaxClientsを超えたコネクションがあった場合
ListenBacklog の設定までキューにたまる、とドキュメントにはあるが、実際に接続してみると、なぜかそれ以上に接続できた。
リクエストの処理を実行している(リクエストを受信し処理している)コネクションは、MaxClientsの値まで数、同時に処理されている(これをアクティブな接続と呼ぶことにする)。
リクエストの処理が開始された時点で、以下のエラーログが出力される。
[error] server reached MaxClients setting, consider raising the MaxClients setting
このログが出力されるには以下の条件がある。
- コネクションのみの場合は出力されない。
- 起動から初めて、MaxClientsを超えた時にだけログが出力される。
- reload(sighup)後、MaxClientsを超えた時にはログは出力されない。
- restart(sigterm)後、MaxClientsを超えた時にログが出力される。
アクティブなコネクションがMaxClientsの数ある状態から、MaxClients以下になった場合、待ちとなっていたコネクションが順次処理される。それ以外の接続は待ち状態のまま。
mod_proxy max
設定値についての注意点
- preforkの場合、常に1となる。
- workerの場合、設定が有効となる。ただし、1プロセスあたりのバックエンドへのコネクションのmax値。つまり、バックエンドサーバーとの最大接続数は以下の式で求められる数となる。
ServerLimit * max
1プロセスあたりの接続数がmaxを超えた場合
- retry * timeoutの間、待ちになる
- retry * timeoutを超えた場合503が発生する
maxを超えた接続がある状態で、max 以下になった場合
順次実行される
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://www.suekichi.org/blog/2011/12/apache_maxclients/trackback/
- トラックバックの送信元リスト
- ApacheのMaxClientsの設定とその挙動をまとめてみた - SUEKICHI.org より