Zopeの負荷がおかしい

連日ウェブの話題です。管理しているウェブサイトは2台のウェブサーバを使って、インタネットからApacheでHTTPリクエストを受け付けて、mod_cacheでキャッシュを効かせたあと、mod_proxy_balancerで複数のZopeインスタンスでリクエストを処理しています。

機械を仮にA機、B機とするとA機で動作しているApacheはA機で動作している複数のZopeインスタンスへリクエストをproxyし、B機でも同様。

先日来、どうもB機で動作しているZopeに妙に多いリクエストがproxyされていることに気がつきました。A機に比べるとその差は歴然。
ZMIでZODBのActivityをみるとこんな具合。


外部からリクエストを処理するApacheのログを参照すると、逆にA機の方がたくさんリクエストを処理しています。その差は4倍くらい。おそらくバックエンドの処理速度に差があったためでしょう。
zope.confには有意な差分は見つかりません。そもそも、ZopeにProxyされるリクエスト数からして大幅な差があるので、これはApache側に原因があるはず。と、httpd.confを調べることしばし。ここにもA機とB機の設定には差分が見つかりません。
もうすこし調べてみて、B機でのHTTPコネクション数がB機で動作しているZopeインスタンスのコネクション数とほぼ同一であることを発見。これはApacheのキャッシュが効いてないってことだな。
もうすこし調べると、CacheRootで指定しているディレクトリがないことに気がつきました。ディレクトリを作成して、ようやく解決。

まだキャッシュのたまり具合がいまいちですが、コネクション数は大幅に減少しました。

なかなか分かりにくい障害でした。