ホーム > Server > ApacheのMaxClientsの設定とその挙動をまとめてみた

ApacheのMaxClientsの設定とその挙動をまとめてみた

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 以下になった場合

順次実行される

コメント:2

耶馬グリーン 2012/05/11

ListenBacklogは、MaxClientを越えた時のキューだと思いますよ。

suekichi 2012/05/21

> 耶馬グリーン
そうなんですけど、MaxClientが1で、ListenBackLogが1の場合、コネクションが最大2で、3つめの接続ができないと思っていたのですが、なぜかできちゃうんです・・・

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
http://www.suekichi.org/blog/2011/12/apache_maxclients/trackback/
トラックバックの送信元リスト
ApacheのMaxClientsの設定とその挙動をまとめてみた - SUEKICHI.org より

ホーム > Server > ApacheのMaxClientsの設定とその挙動をまとめてみた

Tag cloud
Amazon
いろいろ

ページの上部に戻る