apacheの prefork.cとworker.cの違い

/etc/httpd/conf/httpd.conf
を見ると、KeepAliveとかMaxClientとかの設定をする部分が、2つあることに気付きます。

 # prefork MPM
 
StartServers       2
MinSpareServers    5
MaxSpareServers   20
ServerLimit      32
MaxClients       32
MaxRequestsPerChild  0
 
# worker MPM
 
StartServers         2
MaxClients         30
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0

それぞれ一体何が違うのかというと…。

apacheの prefork.cとworker.cの違い

リクエストに対して子プロセスを起動していく方式=prefork
リクエストをスレッドにより対応していく方式=worker

という事のようです。

じゃあ自分が動かしているApacheは一体どっちの方式で動いているのか?
これは、コンパイル時にオプションで設定するんですが、おそらくデフォルトではprefork型のようです。

広告

どっちで動いているかを調べる

それを調べるコマンドはこちら。

[root@ ~]# /usr/sbin/apachectl -V

環境によってはapache部分が違います。

[root@ ~]# /usr/sbin/apache2 -V

いずれにせよ、これでバージョン情報がズラズラと返ってきますが、その中に

Server MPM: Prefork

という記述があります。この場合はprefork型ですね。
もしくは、コンパイル情報の

Server compiled with….
-D APACHE_MPM_DIR=”server/mpm/prefork”

という箇所を探してください。

これで、Apacheの設定をちゃんとピンポイントで適切に行なうことができるようになって、めでたしめでたし。

About: dacelo


2 thoughts on “apacheの prefork.cとworker.cの違い”

Leave a Reply

Your email address will not be published. Required fields are marked *