今回はApache2.4.6のチューニングについて記載したいと思います。

前提条件としてApacheを構築し、vimをある程度使えることを想定しています。
MPMについて
Apacheには、 MPM(Multi Processing Module) といわれるWebブラウザのレクエストに対し並列処理を行うmoduleがあり、その方式(prefork,worker,event)と設定によってはwebサーバのメモリーの空き容量や処理速度を調整することができます。
・Apache 2.4.6(prefork MPM)
⇒ マルチプロセス型
・Apache 2.4.6 (worker MPM)
⇒ マルチプロセスとマルチスレッドのハイブリッド型
・Apache 2.4.6 (event MPM)
⇒ イベント駆動型(Apache2.4 から導入)NginXがこの方式です。
MPMのチューニング
CPU メモリーの状況の確認
vmstat
free -h
実行中のapacheのプロセスの確認とMPMを確認します。
ps -aux |grep apache
apachectl -V |grep MPM
私の環境では MPMがpreforkだったので、eventに変更します。
とりあえず、設定をいじる前にコピーを取ります。
cd /etc/httpd/conf.modules.d
cp 00-mpm.conf 00-mpm.conf_old
vimで設定を変更します。
vim 0-mpm.conf
preforkの記載がある行の先頭に「#」を記入し、eventの記述がある行の先頭の「#」を外します。
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_event_module modules/mod_mpm_event.so
mpn_eventの設定値をいじりたい人は、下記の設定を一番下に追記するといいと思います。
下記の設定はデフォルト値の為、環境に合わせて変更します。
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
ファイルを比較し、変更が正しくできているか確認します。
diff 00-mpm.conf 00-mpm.conf_old
apacheを再起動
systemctl restart httpd
MPMがeventに変わっているか確認します。
apachectl -V |grep MPM
WEBサーバの負荷テストをしながらmpm_eventの設定値を適切な値に変更していきます。
ab -c 10 -n 10 http://hoge.example.com/
-n 数値 リクエストの総数を数値で指定
-c 数値 同時に発行するリクエストの数を数値で指定
私の環境では、eventに切り替えることによってメモリーの使用率が下がりました。
以上でApacheチューニングは終了です。次回はSSHのポート変更について
コメント