Apache の無駄なモジュールをロードしない

httpd-2.2.3-31.el5 では、デフォルト値で 52 個のモジュールがロードされる。これを必要最低限のモジュール (今回の例では 27 個) のみにすることで、気休め程度だが速度向上が期待できる。

httpd.conf 抜粋

モジュールに関する部分のみ抜粋して表示する。なお、モジュールの説明コメント (// 以降) は、実際に設定するときは削除しないと起動しないので注意。

CODE:
  1. # 認証関連
  2. LoadModule auth_basic_module modules/mod_auth_basic.so           // Basic 認証のサポート
  3. LoadModule auth_digest_module modules/mod_auth_digest.so         // Digest 認証
  4. LoadModule authn_file_module modules/mod_authn_file.so           // テキストファイルを用いたユーザ認証
  5. LoadModule authn_alias_module modules/mod_authn_alias.so         // Provides the ability to create extended authentication providers based on actual providers
  6. LoadModule authn_anon_module modules/mod_authn_anon.so           // 認証が必要な領域への "anonymous" ユーザのアクセスを許可
  7. LoadModule authn_dbm_module modules/mod_authn_dbm.so             // DBM ファイルを用いたユーザ認証
  8. LoadModule authn_default_module modules/mod_authn_default.so     // 承認フォールバックモジュール
  9. LoadModule authz_host_module modules/mod_authz_host.so           // ホスト (名前もしくは IP アドレス) に基づいたグループ承認
  10. LoadModule authz_user_module modules/mod_authz_user.so           // ユーザ承認
  11. LoadModule authz_owner_module modules/mod_authz_owner.so         // ファイルの所有者に基づいた承認
  12. LoadModule authz_groupfile_module modules/mod_authz_groupfile.so // プレーンテキストファイルを用いたグループ承認
  13. LoadModule authz_dbm_module modules/mod_authz_dbm.so             // DBM ファイルを用いたグループ承認
  14. LoadModule authz_default_module modules/mod_authz_default.so     // 承認フォールバックモジュール
  15.  
  16. # Alias 関連
  17. LoadModule alias_module modules/mod_alias.so                     // URL のリダイレクトなどを行なう機能
  18. LoadModule vhost_alias_module modules/mod_vhost_alias.so         // Provides for dynamically configured mass virtual hosting
  19. #LoadModule rewrite_module modules/mod_rewrite.so                // mod_rewrite
  20.                                                              
  21. # 動的スクリプト関連                                                 
  22. LoadModule env_module modules/mod_env.so                         // CGI スクリプト及び SSI ページに渡される環境変数を変更する機能
  23. LoadModule suexec_module modules/mod_suexec.so                   // 指定されたユーザとグループで CGI スクリプトを実行する
  24. LoadModule cgi_module modules/mod_cgi.so                         // CGI スクリプトの実行
  25. LoadModule actions_module modules/mod_actions.so                 // メディアタイプやリクエストメソッドに応じて CGI スクリプトを実行する機能を提供
  26. LoadModule usertrack_module modules/mod_usertrack.so             // トラッキングクッキーの発行
  27. #LoadModule include_module modules/mod_include.so                // Server-Side Includes (SSI) 
  28.  
  29. # ログ関連
  30. LoadModule log_config_module modules/mod_log_config.so           // サーバへのリクエストのロギング
  31. LoadModule logio_module modules/mod_logio.so                     // リクエスト毎に入力バイト数と出力バイト数をロギング
  32.  
  33. # メンテナンス関連
  34. #LoadModule status_module modules/mod_status.so                  // サーバの活動状況と性能に関する情報を提供
  35. #LoadModule info_module modules/mod_info.so                      // サーバの設定の包括的な概観を提供する
  36.  
  37. # WebDev 関連
  38. #LoadModule dav_module modules/mod_dav.so                        // 分散オーサリングとバージョン管理 (WebDAV) 機能
  39. #LoadModule dav_fs_module modules/mod_dav_fs.so                  // mod_dav のためのファイルシステムプロバイダ
  40.  
  41. # LDAP
  42. #LoadModule ldap_module modules/mod_ldap.so                      // LDAP connection pooling and result caching services for use by other LDAP modules
  43. #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so        // Allows an LDAP directory to be used to store the database for HTTP Basic authentication.
  44.  
  45. # プロキシ関連
  46. #LoadModule proxy_module modules/mod_proxy.so                    // HTTP/1.1 プロキシ/ゲートウェイサーバ
  47. #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  // 負荷分散のための mod_proxy 拡張
  48. #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so            // FTP support module for mod_proxy
  49. #LoadModule proxy_http_module modules/mod_proxy_http.so          // HTTP support module for mod_proxy
  50. #LoadModule proxy_connect_module modules/mod_proxy_connect.so    // SCGI gateway module for mod_proxy
  51.  
  52. # キャッシュ関連
  53. #LoadModule cache_module modules/mod_cache.so                    // URI をキーにしたコンテンツのキャッシュ
  54. #LoadModule disk_cache_module modules/mod_disk_cache.so          // URI をキーにしたコンテンツキャッシュストレージ管理
  55. #LoadModule file_cache_module modules/mod_file_cache.so          // Caches a static list of files in memory
  56. #LoadModule mem_cache_module modules/mod_mem_cache.so            // URI をキーにしたコンテンツのキャッシュ
  57.  
  58. # その他
  59. LoadModule setenvif_module modules/mod_setenvif.so               // リクエストの特徴に基づいた環境変数の設定を可能にする
  60. LoadModule mime_module modules/mod_mime.so                       // リクエストされたファイルの拡張子とファイルの振る舞い
  61. LoadModule autoindex_module modules/mod_autoindex.so             // ディレクトリインデックスを生成する
  62. LoadModule negotiation_module modules/mod_negotiation.so         // コンテントネゴシエーション機能
  63. LoadModule dir_module modules/mod_dir.so                         // DirectoryIndex など
  64. #LoadModule ext_filter_module modules/mod_ext_filter.so          // レスポンスのボディをクライアントに送る前に外部プログラムで処理する
  65. #LoadModule mime_magic_module modules/mod_mime_magic.so          // Determines the MIME type of a file by looking at a few bytes of its contents
  66. #LoadModule expires_module modules/mod_expires.so                // ユーザの指定した基準に基づいた Expires と Cache-Control HTTP ヘッダの生成
  67. #LoadModule deflate_module modules/mod_deflate.so                // クライアントへ送られる前にコンテンツを圧縮する
  68. #LoadModule headers_module modules/mod_headers.so                // HTTP リクエストのヘッダと応答のヘッダのカスタマイズ
  69. #LoadModule speling_module modules/mod_speling.so                // スペルの簡単な誤り修正
  70. #LoadModule userdir_module modules/mod_userdir.so                // ユーザ専用のディレクトリを提供
  71. #LoadModule version_module modules/mod_version.so                // バージョン依存の設定を行う場合

速度測定

チューニング前

CODE:
  1. # httperf --server=10.0.0.1 --uri=/wordpress/?p=3 --num-conns=100 --rate=10
  2.  
  3.     httperf --client=0/1 --server=10.0.0.1 --port=80 --uri=/wordpress/?p=3 --rate=10 --send-buffer=4096 --recv-buffer=16384 --num-conns=100 --num-calls=1
  4.     Maximum connect burst length: 1
  5.  
  6.     Total: connections 100 requests 100 replies 100 test-duration 13.874 s
  7.  
  8.     Connection rate: 7.2 conn/s (138.7 ms/conn, <=38 concurrent connections)
  9.     Connection time [ms]: min 820.3 avg 3030.9 max 12804.5 median 2775.5 stddev 1705.0
  10.     Connection time [ms]: connect 0.2
  11.     Connection length [replies/conn]: 1.000
  12.  
  13.     Request rate: 7.2 req/s (138.7 ms/req)
  14.     Request size [B]: 75.0
  15.  
  16.     Reply rate [replies/s]: min 5.6 avg 6.2 max 6.8 stddev 0.8 (2 samples)
  17.     Reply time [ms]: response 2984.5 transfer 46.1
  18.     Reply size [B]: header 230.0 content 9911.0 footer 2.0 (total 10143.0)
  19.     Reply status: 1xx=0 2xx=100 3xx=0 4xx=0 5xx=0
  20.  
  21.     CPU time [s]: user 2.01 system 11.86 (user 14.5% system 85.5% total 100.0%)
  22.     Net I/O: 71.9 KB/s (0.6*10^6 bps)
  23.  
  24.     Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
  25.     Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

チューニング後

CODE:
  1. # httperf --server=10.0.0.1 --uri=/wordpress/?p=3 --num-conns=100 --rate=10
  2.  
  3.     Total: connections 100 requests 100 replies 100 test-duration 13.554 s
  4.  
  5.     Connection rate: 7.4 conn/s (135.5 ms/conn, <=33 concurrent connections)
  6.     Connection time [ms]: min 528.6 avg 2625.4 max 9819.7 median 2494.5 stddev 1498.9
  7.     Connection time [ms]: connect 0.2
  8.     Connection length [replies/conn]: 1.000
  9.  
  10.     Request rate: 7.4 req/s (135.5 ms/req)
  11.     Request size [B]: 75.0
  12.  
  13.     Reply rate [replies/s]: min 6.2 avg 6.8 max 7.4 stddev 0.8 (2 samples)
  14.     Reply time [ms]: response 2586.2 transfer 39.0
  15.     Reply size [B]: header 230.0 content 9911.0 footer 2.0 (total 10143.0)
  16.     Reply status: 1xx=0 2xx=100 3xx=0 4xx=0 5xx=0
  17.  
  18.     CPU time [s]: user 2.21 system 11.34 (user 16.3% system 83.7% total 100.0%)
  19.     Net I/O: 73.6 KB/s (0.6*10^6 bps)
  20.  
  21.     Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0
  22.     Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0

Request rate: 7.2 req/s が 7.4 /req/s に向上している。誤差の範囲とも取れるので、気休め程度だけど・・・効果あるはず?

参考文献

モジュール一覧 - Apache HTTP サーバ
http://httpd.apache.org/docs/2.2/ja/mod/

Leave a Reply