mod_perl化でhttpdが不安定に

  • 投稿日:
  • by
  • Category:

先日のサーバーのmod_perl化で、MTがキビキビ動くようになったのはいいのですが、httpdが不安定になってしまいました。具体的には、頻繁に「ページがみつかりません」というエラーメッセージが出るようになってしまいました。私はウェブメールを愛用しているので、メールの送信時にこのエラーが出ると、書いたばかりのメールが失われてしまうために泣きたくなります(すでにこの数日で悲劇は10回以上起きています)。

ひらたさんに相談してみると、mod_perl化したhttpdでMTを動かすと、MT全体をキャッシュしてしまうので、多くのhttpdプロセスが立ち上がると、あっという間に大量のメモリーを食ってしまう、ということを教わりました。

とりあえずはhttpd.confの「MaxSpareServers」を小さく抑える(具体的にはメモリ登載量 -100M)/20M程度)ことで応急処置しました。

それでも頻度は減ったものの、やはり時々、悲劇がおきます(実はこのポストの最中にも悲劇が起き、半分以上をいま書き直しています)。

そこで抜本的な解決策として、フロントエンドにロードバランサーも兼ねてPoundを置き、MTはmod_perl化したapache1.3、その他のページはapache2で処理する、ということにしました。

poundの設定はそれほど面倒でないのですが、やはりapache/apache2の設定は複雑なのと、安易にやるとウェブサーバー全体に影響が出てしまうので、とりあえずは参考にするページその他をここに記しておくにとどめます。週末など時間があるときに実作業することにしました。

pound本家
poundについての情報
C10K Problem by 竹迫さん
poundを使った構成の模式図

コメント(1)

ザ・ケイゾウ

そもそもスペア・プロセスって必要ですか(fork()時間の節約にしかならないし)。同時接続数でメモリーが圧迫されるという話ならMaxClientsを絞るのが早いと思います。とりあえずKeepAliveは無しで。