ApacheのMaxClientsのチューニング方法とそれに関連するListenBacklogについてです。
※目次をクリックすると目次の下部にコンテンツが表示されます。
MaxClientsのチューニング
・まず最初はMaxClientsの設定値を少し増加させ、システムが正常に正常に処理できるか確認する。
サーバーが許容できる最大のMaxClientsを設定したとしてもそれが最良のスループットになるとは限らない。
そのような高い同時接続の状況ではコンテキストスイッチの回数も増加し、Apacheの処理時間も増加するので、それほどスループットが増加しないこともある。
・1子プロセスあたりのメモリ使用量を基にMaxClientsのおおよそ最大値を見積もる事が出来る。
子プロセス当りのメモリ量とMaxClientsの積がApache全体に割当てたメモリ量を超えないように見積もる。
Apacheに割当てるメモリ量は、専用のWebサーバーの場合はOS使用分を差し引いたメモリ全体の量で、ApacheとMySQLが共存する場合は利用可能なメモリ量の半分を目安とする。
・一つのアプリ内の複数インスタンスのメモリ使用量を確認する方法の例
下記出力例では、rss(実メモリ上の使用サイズ)の最大値は50MなのでApacheへの割り当てが1GとするとMaxClientsは20と見積もる事ができる。
サーバーが許容できる最大の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ステータスコードを返す。
・MaxClientsの設定値に達するとListenBacklogディレクティブで定義された値までリクエストがキューイングされる。
キューイングされている間、多くのブラウザではブランク画面の状態で待たされる。
このキューも一杯になるとApacheは503ステータスコードを返す。
-
インストール、設定全般、運用
- Apacheのインストール
- Apache初期設定確認
- Apacheの静的、DSOモジュールの確認、インストール方法
- Apacheでconf.dディレクトリ内の設定ファイルのインクルードに注意
- Apacheのhttpdサービスの使用方法
- WordPressパーマリンク設定時のApache設定
- Apache mod_rewriteの仕組み、設定方法、動作確認
- Apacheで特定の拡張子を含むリクエストをログ対象から外す
- CentOS Stream9でApache、PHPを設定する際の注意点
- ApacheのTraceメソッドを無効にする
- ヘッダーにApacheバージョンが表示されないようにする
- PHPのバージョン情報とApacheの設定
- Apacheでディレクトリ内一覧表示を無効にする
- Apacheで不要なモジュールはロードしない
- Apacheで不要なモジュールはロードしない(1)ベーシック認証と認証プロバイダ
- Apacheで不要なモジュールはロードしない(2)ダイジェスト認証
- Apacheで不要なモジュールはロードしない(3)mod_rewrite、LDAP、WebDAV
- Apacheで不要なモジュールはロードしない(4)Server Side Includes
- Apacheで不要なモジュールはロードしない(5)mod_mime_magic
- Apacheで不要なモジュールはロードしない(6)mod_info、mod_status
- Apacheで不要なモジュールはロードしない(7)mod_speling、mod_userdir
- Apacheで不要なモジュールはロードしない(8)プロキシ関連のモジュール
- Apacheで不要なモジュールはロードしない(9)キャッシュ関連のモジュール
- Apacheで不要なモジュールはロードしない(10)CGI関連のモジュール
- Apacheで不要なモジュールはロードしない(11)フィルター、expires、圧縮のモジュール
- Apacheでディレクトリへのアクセスを制限する設定方法
- Apacheベーシック認証の設定手順とセキュリティ上の注意
- Apacheで使用できるHTTPメソッドを制限する
- FIPS140-2とApacheのmod_nss
- Apacheにおける自己証明書作成手順
- ApacheにおけるSSL証明書インストール手順
- DoS攻撃からWebサーバーを保護するApacheモジュール
- Apacheに関するLinux側のセキュリティ設定(パーミッション、iptables、chroot)
- Modsecurityの概要と特徴
- Modsecurityのインストール方法
- modsecurityの設定方法と設定例
- Apacheのパフォーマンスに影響を与えるOS、ハードウェアの要素、注意点
- ApacheのMPMの概要とチューニング
- ApacheのMaxClientsのチューニングとListenBacklog
- HostnameLookupsを有効にして名前解決を行う場合のApacheパフォーマンスに与える影響
- FollowSymLinks、SymLinksIfOwnerMatchの設定とApacheのパフォーマンス
- AllowOverrideの設定とApacheのパフォーマンス
- コンテントネゴシエーションの設定とApacheのパフォーマンス
- Apacheのプロセス生成とパフォーマンスに与える影響
セキュリティ
パフォーマンス