UNIX的なアレ:gihyo.jp出張所

第7回知っておきたいApacheの基礎知識 その3

さて、前回まではapacheのインストールから起動・停止の方法について説明をしてきました。これまでは、Apacheをインストールした際に標準で設定されるhttpd.confを使用してきましたが、実際に使い込んでいくとなるとそのままで使うことはできません。

今回からは実際にhttpd.confの記述方法を説明していきたいと思います。

標準のhttpd.confを見てみる

Apacheの設定ファイルは、標準ではhttpd.confとなっています。こちらのファイルは以下の場所に保存されているので、見てみましょう。

$ ls -l /usr/local/apache2/conf/httpd.conf
-rw-r--r-- 1 root root 35058 2008-XX-XX 00:00 /usr/local/apache2/conf/httpd.conf

ファイルが存在することを確認できたでしょうか? それではcatコマンドを使用して、ファイルの中身を確認してください。

$ cat /usr/local/apache2/conf/httpd.conf
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See  for detailed information about
# the directives.
…略…

1,000行ほどあるファイルなので、ここではすべては記述していませんが、上記のような記述から始まるファイルとなっています。ここでお気付きになるかと思いますが、ファイルの中身の大半はコメントアウトされています。つまり、実際に設定を行っている部分は一部です。

なお、今回は実際に利用するための設定ファイルのサンプルを別途用意していますので、下記のリンクからダウンロードしてください。

MPMを指定する

まず、Apacheのキモとなる部分MPMの設定をしていきましょう。MPMとはMulti Processing Moduleの略で、さまざまな設定をすることでApacheの動作方法を指定することができます。これらの設定の多くは、Apacheのパフォーマンスに直接関わってくる部分です。 一般的によく使われるMPMは以下の2種類です。

1.worker
スレッドを使用する。パフォーマンスを重視する際に有利だが、スレッドセーフでないプログラムを動作させることは危険。なお、PHPはworkerで動作させることは推奨されていない。
2.prefork
スレッドを使用せず、事前にユーザからリクエストを受けるためのプロセスをforkさせている。安全に動作させることができるが、workerと比較すると効率が悪い。

上記のとおり、それぞれに長所・短所があります。そのため、実際にどういったケースで使用するかを考えた上で選択をするようにしましょう。今回はpreforkで設定を進めてめていきます。

MPMの設定をする

それでは、実際にhttpd.confを見ていきましょう。MPMに関する設定ファイルは以下の部分です。

# MPM Settings (prefork)
StartServers         5  # apacheを起動したときに最初にあがるプロセス数 (リクエスト数に応じて動的に変化)
MinSpareServers      5  # 待機するプロセス数の最小値
MaxSpareServers     50  # 待機するプロセス数の最大値
MaxClients         150  # リクエストに応答できる最大数
MaxRequestsPerChild  0  # 1プロセスが扱うリクエスト数。0を記述することで、プロセスは終了しない

上記が基本的に設定する内容です。ここでServersと呼ばれているものは、実際にリクエストを処理するApacheのプロセスのことです。

preforkの場合は、同時に処理できる数は1プロセスあたり1接続となります。そのため、Apacheが使うことのできるリソースの中でできるだけ多くのプロセス数を上げることが可能な設定にしておくべきでしょう。

[TIPS] apache-mode.elを導入する

もっと効率良くhttpd.confを記述したいと思う方もいらっしゃるでしょう.そういった方のために、Emacsではhttpd.confを効率良く記述するためのelispが用意されています。

font-lock-modeと併用することでカラーリングも行うことができるので、Emacsユーザの方はぜひ試してみてください。

apache-mode.el
http://www.emacswiki.org/cgi-bin/wiki/diff/apache-mode.el
Emacs上でカラーリング
Emacs上でカラーリング

パフォーマンスチューニングのために

今回はapacheのMPM周りの設定方法について記述をしてきました。こちらはプロセスやスレッドに関する基本的な知識がないとなかなか難しい部分かと思います。一度設定をしてしまうとあまり設定する機会はない部分ではありますが、実際にパフォーマンスのチューニングを行う上では重要な設定になるのでしっかりと押さえておきましょう。

おすすめ記事

記事・ニュース一覧