カテゴリアーカイブを少しずつ再構築する

Movable Type 4.1以前をお使いの方の中に、「ブログ全体の再構築をすると、カテゴリアーカイブを再構築する際に、Internal Server Errorが起きてしまう」という方が、ときどきいらっしゃいます。
カテゴリの数が多い場合に、この現象が起きることがあり得ます。

Movable Type 4.2以降では、カテゴリアーカイブを少しずつ再構築することができます。
Movable Type 4.1以前を使っていて、カテゴリアーカイブの再構築時にInternal Server Errorが出る方は、Movable Type 4.2以降にバージョンアップすることで、この問題を避けることができる場合があります。

1.EntriesPerRebuildの設定

Movable Type 4.1xまでは、カテゴリアーカイブを再構築する際には、すべてのカテゴリを一気に再構築するようになっています。
そのため、カテゴリの数が多くなると、再構築に時間がかかり、CGIがタイムアウトを起こして、Internal Server Errorになることがあります。

一方、Movable Type 4.2以降では、カテゴリアーカイブを一気に再構築せず、少しずつ再構築するようになっています。
一度に再構築するカテゴリの数は、mt-config.cgiの「EntriesPerRebuild」で設定することができます。
例えば、mt-config.cgiに以下の行を追加すると、カテゴリを10件ずつ再構築することができます。

EntriesPerRebuild 10

また、mt-config.cgiでEntriesPerRebuildを指定しない場合、デフォルト値の40が使われます。

2.EntriesPerRebuildの数を小さくしすぎない

EntriesPerRebuildの数を小さくすればするほど、一度に再構築するカテゴリの数が減ります。
そのため、Internal Server Errorがより起こりにくくなります。

ただ、EntriesPerRebuildの数をあまり小さくしすぎると、再構築の際にmt.cgiが実行される回数が増えます。
そのために、再構築全体の処理時間が伸びてしまいます。
EntriesPerRebuildを設定する際には、Internal Server Errorにならない程度に、なるべく大きい数値を指定する方が良いでしょう。

3.ブログ記事アーカイブの再構築件数にも適用される

EntriesPerRebuildは、本来はブログ記事アーカイブを再構築する際に、指定した件数ずつ区切って再構築するための設定です。
例えば、「EntriesPerRebuild 10」と書くと、カテゴリアーカイブだけでなく、ブログ記事も10件ずつ再構築するようになります。

ただ、一度に再構築するカテゴリの数とブログ記事の数の最適値は、同じではないはずです。
カテゴリアーカイブの再構築の際に、一度に再構築カテゴリの数の設定は、「CategoriesPerRebuild」などの別の方法で設定できる方が望ましいと思います。
今後のバージョンでは、この点も検討していただきたいものです。