先日のサーバーの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を使った構成の模式図