【この記事の所要時間 : 約 4 分】
最近、ブログのエントリー数が多くなったのと個別エントリーに関連エントリー、読まれたエントリー、1年前のエントリーなどを表示していることと、スマホ用ページをカスタマイズしたことなどによって「すべてを再構築」する時にタイムアウトになることがあった。
ということで、久しぶりにMovable Typeの再構築が失敗する時の対策というエントリーを書いておこうと思う。以前書いたのは、もう8年近くも前のことだった!
現象1.個別エントリーの再構築時に失敗する場合
対策1.EntriesPerRebuild の値を小さくする
mt-config.cgi では、デフォルトで個別エントリーの再構築の単位は40個づつとなっているので、その数を少なくしてサーバの負荷を減らす方法である。mt-config.cgi はMTのバージョンによって # EntriesPerRebuild 40 と記述しているものもあれば、何も書いていないものもあるが、最後部にでも、EntriesPerRebuild 10 とでも書いておくと良い。
現象2.月別エントリーの再構築時に失敗する場合
対策2.Limit_Multipliers にて Monthly の値を小さくする
MTインストールフォルダ配下の lib/MT/App/CMS.pm に以下のような記述がある。
my %Limit_Multipliers = (
Individual => 1,
Daily => 2,
Weekly => 5,
Monthly => 10,
Dynamic => 5,
);
再構築の単位は、Limit_Multipliers と、対策1で紹介したEntriesPerRebuildをかけた数値である。よって月別エントリーの再構築で失敗する場合は、Monthly => 10 となっている部分を、Monthly => 5 とかにすればいいのである。EntriesPerRebuildも下げて、この数字も下げると一気に月別エントリーの再構築単位が小さくなる。
現象3.カテゴリエントリーの再構築時に失敗する場合
対策3.Smart Rebuildというプラグインを使う
これも以前、記事にしたが、Smart Rebuildというプラグインを使うとカテゴリを分割して再構築することができる。これによってカテゴリの再構築単位を小さくすることができる。
MovableTypeのカテゴリ再構築の高速化
現象4.インデックス・テンプレートの再構築時に失敗する場合
対策4.インデックス・テンプレートを再構築するときに自動的に再構築するファイルを減らす
インデックス・テンプレートは、それぞれのテンプレートにて自動的に再構築するかどうか選択できるようになっている。デフォルトでは「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」などがオンになっているので、これをオフにすればOK。毎回再構築する必要のないテンプレートをオフにしておくと良い。
現象5.上記4つをためしたが再構築がうまくいかない場合
対策5.テンプレートの見直しを行う
テンプレートが複雑だったり、タグを大量に入っていたり、大量のデータを表示させようとしていたりすると、再構築時にサーバの負荷があがる。たとえば、サイドバーや記事下に出している関連情報やさまざまな表示データを減らしたり、タグを見直したりすることでうまくいく場合があるのでやってみよう!
リビルド支援ツールというのもある!
「rebuild支援ツール for MovableType」は、 分割再構築をサポートするためのツールである。再構築の負荷を少しでも減らして Internal Server Error を回避するため、 一気に全部 再構築するのではなく、アーカイブファイル1つづつ、 エントリ数個づつ、 何回かに分けて 再構築するためのツールである。
マイナビ
売り上げランキング: 95,296