2005年12月19日
Movable Type の再構築で 500 Internal Server Error
MovableType で再構築をすると、たまに 500 Internal Server Error が出る。
ボクがその現象を見るようになったのは、3.2 にアップグレードしてからである。3.1x の時代には多分見ていない。
500エラーが出たとき、リロードすると何事も無く再構築を継続することが多い。これはおそらく、サーバの負荷が高くてタイムアウトしているか、メモリが確保できていないかのどちらかであろう。
ググッて見ると、いろんな原因が出てくる。
3.1x 時代には、fileinfo.db が肥大化するという問題があったようだ。これは BerkeleyDB 使用時に起こる。解決方法は単にそのファイルを削除するだけ。削除するプラグインもあるようだ。3.2で解決しているかどうかは分からないが、いいかげん解決しているものと思う。
3.2 リリース直後にも BerkeleyDB環境下で 500エラーが出る問題があった。しかし、すぐに修正版が出ている。(10/12 の Release-2)
BerkeleyDB よりも MySQL の方がエラーが出にくいという話もある。これは本当だろうか。タイムアウトの制限が厳しい場合には効果があるかもしれない。メモリの制限の場合はあまり関係ないような気がする。以前のバグあり版を使っている場合はもちろん効果絶大だろう。
EntriesPerRebuild を、デフォルトの 40 から 10 程度に下げるのも効果があるらしい。これは、再構築時に一度に処理するエントリ数を指定するオプションであり、小さくすれば制限にかかりにくい。その代償として、再構築時間がちょっと延びると思う。
rebuild支援ツール for MovableType を使うという回避策もあるらしい。しかし、これと「EntriesPerRebuild を小さくする」の違いがよく分からない。もしかして、EntriesPerRebuild を知らなくて作ってしまったなんてことは無いだろうか。ヒトゴトながら心配である。
テンプレートを改造して負荷を低くするという回避策もあるらしい。そこまで行くと、なんか別のブログソフトを使ったほうが良いんじゃないかと思う。
ボクの解決策としては、いままでは「処理が完了するまでリロードを繰り返す」だった。それと、サーバの負荷の低そうなときに再構築するというパッシブな策。
しかし、高負荷時間帯でも再構築できるように、まずは EntriesPerRebuild をいじってみようと思う。
このエントリーのトラックバックURL:
http://weblog.rukihena.com/mt/mt-tb.cgi/289