wordpress 2.5x/2.6xとphp5.2.x(とx86_64?)の挙動不振

# mbstring関係とおぼしき話なんだけど、なぜか日本語の情報が異常に少いのでエントリ書いてみる

最近、もろもろの事情からphp5.2.6を導入後、webサーバの挙動が極端に遅くなることがあることに気づいた。ちょっと負荷が、といった程度ではなく、えんえんと高負荷状態が続き、そうなると大抵のサーバはメールサーバも兼ねているので、そっちが遅延しだす。ヘタするとnamedがコッソリ落ちたりする。ワームが喰いついた形跡もないし、サーバを再起動すると何事もなかったように復帰。

で、いろいろと原因を探ったところ、httpd/error_logにこんな記録が。

[Sun Nov 16 11:47:54 2008] [error] [client xxx.xxx.222.55] PHP Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /xxxxxxxxx/wp-includes/gettext.php on line 91
[Sun Nov 16 11:47:54 2008] [error] [client xxx.xxx.222.55] PHP Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /xxxxxxxxx/wp-includes/gettext.php on line 91
[Sun Nov 16 11:48:29 2008] [error] [client xxx.xxx.222.55] PHP Fatal error: Maximum execution time of 30 seconds exceeded in /xxxxxxxxx/wp-includes/streams.php on line 92

うーん、わけわからん。とにかく、gettextまわりがよろしくない、ということで、いろいろ調査。

WordPress › Support » PHP Warning: unpack() [<a href=’function.unpack’>function.unpack</a>]: Type V: n

ま、そのものずばりの話ではあるんだけど、結局「WPLANGを空っぽにするとイイよ」という投げ遣りな回答。いや、まあ、それはそうなんだが。。。(ちなみに、コレをやると、一見管理画面の国際化がなされなくなる「だけ」に見えますが、gettextが絡むタイトル表示部分とかの、「外見」部分が若干おかしくなるのでオススメしません)

A PHP mbstring bug? | Jure Merhar

こういう話も。たぶん、コレが正解に近いと思うし、wordpressのgettextクラス(特に2.6xのやつ)はこれでもか、と修正コードが並んでいるんですが、ソレにしても解決せず。とにかく、なんか起きてしまったhttpdのプロセスがめちゃくちゃリソースを喰うので、それらが切り捨てられる(タイムアウトする)までは問題は解決しない模様。

今のところウチでの解消方法は、httpd.confで、

MaxRequestsPerChild 16
※デフォは4000。プロセスの「再起動までの寿命回数」を決めるので、(メモリリークするプログラムを抱えていない、健全なサーバであれば)大きな値を指定するのが推奨。

と超短命にして、「プロセスごとにこまかくapacheを再起動」というコスい戦術。

Firefox2.xだと、管理画面上にエラーが現れて更新自体うまくできなくなったりと、とにかくスッキリしないこの現象、どなたか情報プリーズ。

[2009-01-17追記]解決しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です