最初にお断りしますが、すっごいありがちな終わり方をします. ちなみに、うちの MT は、ver. 3.35 です.
Blog 再構築で、Internal Server Error (500 error) が出るようになったのはかなり前です.
インデックステンプレートとエントリアーカイヴは問題ないのですが、日別、月別、カテゴリアーカイヴの再構築がエラー終了するという症状.
ざっと見たところアーカイブページもちゃんと更新されてるっぽかったので、そのまま放っといたのがそもそもの間違い.
このところ、画像のポップアップを Highslide JS にしたり、はてなスターを付けたりと、割と目につきやすい変更をしたわけですが、エラーのでるアーカイブページではやっぱり更新されてない部分があることを見つけました(いや、当たり前なんすけどね).
日別、月別では 2007 年 6 月以前、カテゴリではばらばらにいくつかの部分で、再構築が効いていません.
MovableType での再構築時 500 error は FAQ みたいで、同じような情報がごろごろ見つかります.
多くが述べているところは、再構築に時間がかかりすぎている という話. これは、エラーが初発したときにすでに見ていました.
しかし、いちばん時間のかかっていそうなエントリアーカイブの再構築(40 エントリきざみ)がうまくいっているわけだから、これは関係ないだろうと思い込んでいました.
他に記載があったのは、特定のエントリをアップするときに何かの障害が起こり、データベースに傷が残っている というもの.
いつごろからエラーが出たのかを思い出し、データベースの所定部分を削除する なんて書いてあります.
ちょっと自分にできそうにない操作だし、下手をして blog 全体をダメにするのも怖かったので、放置していたというわけです.
今回改めて現象をみてみると、ある日突然始まったことでもあるし、どうも後者ではないかという気がしてきました.
データベースの書き出しをして、MovableType の再インストールからやりなおせば? と悪魔がささやきましたが、ひとまず再構築時間の件をなんとかしてみることにしました.
見たページでいちばん参考になったのがこちらです.
mt-config.cgi の変更をします.
まず変更しろと書いてある EntriesPerBuild ですが、自分の環境ではこの記載がそもそもなされていませんでした.
デフォルトが 40(件)ですので、多くのページで勧めてある 10 に減らしてみました.
確かに、10 エントリずつ再構築されるようになります.
これは、エントリアーカイブに関する再構築件数の話で、日別、月別については、この数値の何倍でやるかということを、CMS.pm 内で規定するようです(CMS.pm は、lib/MT/App/ にあります).
なんともややこしいですね.
さて、この変更で、日別、月別のエラーは解消してしまいました.
ああ、最初から先入観持たずにやってれば良かったですよ.
これでも、カテゴリアーカイヴだけはエラーが消えません.
次にタイムアウト時間の延長をしてみました.
PingTimeout の数値を増やすように書いてありますが、ver. 3.3 以降は HTTPTimeout に置き換わっているようです. 同様の修正をする方はご注意を.
結果は、NG.
そもそもそんなに時間が経過しないところで 500 error が出ますので、タイムアウトではないんでしょう.
あれこれ検索しているうちに、rebuild 支援ツールなるものの存在につき当たったのですが、ちょっと古すぎ.
そして、ようやく見つけたのがここです.
ほとんど同じ状況なので、かなり期待しました.
紹介されている、SmartRebuild plug-in を早速導入.
すかっと解決しました.
動作をみていると、カテゴリアーカイヴの再構築を 10 カテゴリずつに区切って行っているようです.
タイムアウトではなかったのに、なぜこれで解決するのかは、よく分かりませんね.
ま、結果オーライです.
Blog 自体は定期的にローカルにそのままバックアップしてるし、データベースの書き出しも行ってはいるけど、根の深いエラーでブログシステム自体の再インストールになるのは、ちょっと恐怖ですねぇ.
ふつうのサイトなら、自分の知識でもなんとかなるけど.
今回は、そういうトラブルでなくて、ほんとに良かったです.