Apache2.4からはデフォルトでEvent MPMになってるのに気付かなかった話
Published on
Apacheが遅い/止まると言われてしまいまして
現在進めているプロジェクトで、やや大きめのサーバ構築をしてたんですが、ちょくちょく「レスポンスが遅い/Apacheが止まる」と言われてしまい、うーんなんでだろうと色々試行錯誤していたメモ書きです。
ちなみにDBはMySQL-Cluster、サーバサイドはPHPです。
(本当はPound側とかMySQL側にもいくばくかの問題があったのですが、主な問題はここだったのでほかは省略)
MPMの話だった
原因に気づいたのはパフォーマンスチューニングの最中でした。Apache Benchでもそもそ検証してたんですが、
ab -n 10 -c 2 http://localhost/xxx
という小さめな条件振りでもレスポンスに失敗するケースに陥りました。それなりのスペックを積んでるマシンなので、これはおかしいと思いながら設定周りを見直すことに。とりあえず以下のようにhttpd.confを書きました。
<IfModule prefork.c>
StartServer 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 200
MaxClients 200
</IfModule>
ここで罠に気づいた方もいらっしゃるかと思いますが、もうしばらくお付き合いください。
まぁ何度やってもパフォーマンスは改善せず。なんだろーと色々試行錯誤してるうちに、ふとIfModuleの項を外してhttpdをリスタート。すると…
Apacheのconfiguration Error
「え、なになになんなの?prefork.cないわけ?」と思うわけです。マルチプロセッシングモジュール (MPM) - Apache HTTP サーバによると、Unix系はデフォルトでMPMはpreforkって書いてありますよね(この時点で2.2のドキュメントであることに気づきませんでした…)。で、今回ソースからインストールしているのはApache2.4.4。まさかと思いMPMをチェックすると、
# /usr/local/httpd/bin/apachectl -V
> Server MPM: event
え、eventってなんですか僕workerかpreforkしか知らないんですが。調べると非同期I/Oとかできる新しいMPMみたいですね。以下のサイトを参考に。
Apache2.4そろそろリリース…かもしれないので非同期I/Oのevent mpmの紹介
どうやら2.4からはevent MPMデフォルトになっているようです。全く知りませんでした…。で、preforkを使うように再コンパイル。
./configure prefix=/usr/local/httpd ..... --with-mpm=prefork
という感じでオプションをつけて再コンパイルをすると無事preforkに。abコマンドもちゃんとレスポンスを返すようになって事無きを得ました。ちなみに、サーバーサイドがPHPの場合(mod_php)の場合はMPMはprefork一択なんです。この辺りは以下のサイトが詳しいです。
Apache + PHPでloadavgがじわじわ上がっていく現象と対策
あとはabを繰り返してパフォーマンスチューニングをすることでレスポンスは改善されましたとさ。あ、あとはMySQL-Clusterの設定が重要なファクターでもあったんですが、それはまた機会があれば。
Rhena さん
Whoever edits and puiblshes these articles really knows what they're doing.
Ukey さん
Hey, that's the grttease! So with ll this brain power AWHFY? http://rjtybsfez.com [url=http://doaxgizy.com]doaxgizy[/url] [link=http://oflzaemffd.com]oflzaemffd[/link]
Marielle さん
When you think about it, that's got to be the right <a href="http://odteygd.com">anwrse.</a>
コメントを投稿する
このブログについて
エントリの70%は備忘録とメモで構成されています。
そのためやや実験的な要素が含まれる場合がありますが、基本的に自分でやったことしか書いてません。
ご意見・ご要望があればTwitterでご連絡下さい。
@sugimoto1981
最近投稿された記事
カテゴリー
カレンダー
<<
2014年 7月
>>
日 月 火 水 木 金 土
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31