ApacheのMaxClientsのチューニングとListenBacklog

ApacheのMaxClientsのチューニング方法とそれに関連するListenBacklogについてです。

※目次をクリックすると目次の下部にコンテンツが表示されます。

MaxClientsのチューニング
・まず最初はMaxClientsの設定値を少し増加させ、システムが正常に正常に処理できるか確認する。
 サーバーが許容できる最大のMaxClientsを設定したとしてもそれが最良のスループットになるとは限らない。
 そのような高い同時接続の状況ではコンテキストスイッチの回数も増加し、Apacheの処理時間も増加するので、それほどスループットが増加しないこともある。
 
・1子プロセスあたりのメモリ使用量を基にMaxClientsのおおよそ最大値を見積もる事が出来る。
 子プロセス当りのメモリ量とMaxClientsの積がApache全体に割当てたメモリ量を超えないように見積もる。
 Apacheに割当てるメモリ量は、専用のWebサーバーの場合はOS使用分を差し引いたメモリ全体の量で、ApacheとMySQLが共存する場合は利用可能なメモリ量の半分を目安とする。
 
・一つのアプリ内の複数インスタンスのメモリ使用量を確認する方法の例
 下記出力例では、rss(実メモリ上の使用サイズ)の最大値は50MなのでApacheへの割り当てが1GとするとMaxClientsは20と見積もる事ができる。

$ ps -ylC httpd --sort:rss
S   UID   PID  PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
S     0  9389     1  0  80   0  8004 78897 poll_s ?        00:01:13 httpd
S    48  2241  9389  0  80   0 29964 83950 inet_c ?        00:01:14 httpd
S    48  4947  9389  0  80   0 33028 84784 inet_c ?        00:00:17 httpd
S    48  2237  9389  0  80   0 37756 85922 inet_c ?        00:01:14 httpd
S    48  8905  9389  0  80   0 41852 89063 inet_c ?        00:00:15 httpd
S    48  2235  9389  0  80   0 43124 89335 inet_c ?        00:01:17 httpd
S    48  2242  9389  0  80   0 44480 89661 inet_c ?        00:01:16 httpd
S    48 16978  9389  0  80   0 45120 89780 inet_c ?        00:01:29 httpd
S    48  2240  9389  0  80   0 45556 89917 inet_c ?        00:01:14 httpd
S    48  2239  9389  0  80   0 46656 90215 inet_c ?        00:01:10 httpd
S    48 16975  9389  0  80   0 47736 90244 inet_c ?        00:01:30 httpd
S    48 16793  9389  0  80   0 48792 90644 inet_c ?        00:01:22 httpd

ListenBacklog
・ListenBacklogディレクティブは、保留状態のコネクションのキューの最大長を示す。通常は、この設定値を変更する必要は無い。
 
・MaxClientsの設定値に達するとListenBacklogディレクティブで定義された値までリクエストがキューイングされる。
 キューイングされている間、多くのブラウザではブランク画面の状態で待たされる。
 このキューも一杯になるとApacheは503ステータスコードを返す。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください