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”
-D APACHE_MPM_DIR=”server/mpm/prefork”
という箇所を探してください。
これで、Apacheの設定をちゃんとピンポイントで適切に行なうことができるようになって、めでたしめでたし。
2 thoughts on “apacheの prefork.cとworker.cの違い”