実用 Apache 2.0運用・管理術

第3回 httpd.confによるWebサーバの最適化 

Webサーバのチューニングには、いくつかの段階がある。今回は、httpd.confの修正によるApacheの最適化について説明する。(編集部)

鶴長 鎮一(book@tsurunaga.jp)
2005/9/16

 今回は、httpd.confでできるチューニングについて解説します。httpd.confファイルの場所はディストリビューションやインストール方法によって異なり、主に

  /etc/httpd/conf/ Fedora CoreなどRed Hat系
  /etc/apache2/ SUSE系
  /usr/local/apache2/conf/ ソースからインストールした場合

などに配置されています。

 なお、httpd.confの更新内容を有効にするには、httpd.conf編集後にApacheを再起動する必要があります。Apacheの再起動は、第1回の「起動/終了、サービスの登録」を参考にしてください。

不要な機能、設定の削除

不要なモジュールの削除

 Apacheは、モジュールによって機能を追加することができます。Apacheインストール時に組み込まれているモジュールは、以下のようにして確認できます。

$ /usr/sbin/httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

 これ以外にも、Apache 2.0ではDSO(Dynamic Shared Object)を利用することで、実行時にモジュールを組み込むことができます。DSOによるモジュール組み込みは、httpd.confファイルでLoadModuleディレクティブを使ってモジュールを指定します。

LoadModule php5_module modules/libphp5.so
PHP 5の組み込み例

 モジュールを組み込むとApacheが肥大化し、動作速度にも影響します。そこで、不要なモジュールを組み込まないように、LoadModuleをコメントアウトします。基本的なHTTPサービスだけであれば、モジュールの組み込みは一切不要です。

# LoadModule foo_module modules/mod_foo.so
行頭に「#」を付けてコメントアウト

Fedora Core/SUSE/Turboのhttpd.conf

 httpd.confファイルには、外部の設定ファイルを取り込むことができます。下の例では、/etc/httpd/conf.d/(SUSE LINUXは/etc/apache2/conf.d)ディレクトリにある拡張子が「conf」のファイルをすべて読み込みます。

Include conf.d/*.conf
注:ServerRootディレクティブで指定されたディレクトリからの相対パスです。

 上記の方法はFedora CoreやSUSE LINUX、Turbolinuxなど多くのディストリビューションでは常とう手段となっています。PHPやPerlなど追加機能ごとに設定ファイルを切り出すことで、httpd.confファイルが肥大化して見通しが悪くなることを防いでいるのです。例えば、Fedora Core4では以下のファイルが組み込まれます。

# ls /etc/httpd/conf.d/*conf
auth_kerb.conf   mailman.conf  python.conf        welcome.conf
auth_mysql.conf  manual.conf   squirrelmail.conf  wordtrans.conf
auth_pgsql.conf  mrtg.conf     ssl.conf
authz_ldap.conf  perl.conf     subversion.conf
htdig.conf       php.conf      webalizer.conf

 これらのファイルの中にはモジュールを組み込んでいるものもあり、パフォーマンスに影響するものもあります。httpd.confを見直す際は、これらの追加confファイルも忘れないように注意しましょう。また、モジュールと同じく、Apacheの基本動作に上記のファイルはほとんど必要ありません。「Include conf.d/*.conf」をコメントアウトして読み込まないようにするか、ワイルドカード指定を止めて必要なconfファイルだけを直接指定するようにしましょう。

#Include conf.d/*.conf
Include conf.d/php.conf

httpd.confの減量

 httpd.confファイルに余分な記述があると、動作が緩慢になる場合もあります。以下の内容のhttpd.confがあれば、必要最小限のHTTPサービスは提供可能です。

Listen 80
ServerRoot "/etc/httpd"
DocumentRoot "/var/www/html/"

User  nobody
Group nobody

<IfModule prefork.c>
MaxClients       150
StartServers     5
MinSpareServers  5
MaxSpareServers 10
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

MaxRequestsPerChild 0

ErrorLog logs/error_log

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
httpd.conf

 httpd.confをダイエットすることで、httpd.confの見通しも良くなります。上記の内容をベースに、必要な設定を追加するようにするとよいでしょう。

1/3

Index
実用 Apache 2.0運用・管理術
 第3回 httpd.confによるWebサーバの最適化
Page 1
 不要な機能、設定の削除
  不要なモジュールの削除
  Fedora Core/SUSE/Turboのhttpd.conf
  httpd.confの減量
  Page 2
 KeepAliveの設定
  KeepAlive
  MaxKeepAliveRequests
  KeepAliveTimeout
 プロセスの設定(prefork MPM)
  StartServers
  MinSpareServers/MaxSpareServers
  MaxClients/ServerLimit
  MaxRequestsPerChild
  Page 3
 スレッドの設定(worker MPM)
  MinSpareThreads/MaxSpareThreads
  ThreadsPerChild
 プロセスの状態確認方法
  プロセスの使用メモリ量を調べるには
  起動プロセス/待機プロセスの状態を調べるには

連載 実用 Apache 2.0運用・管理術


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH