たまには実用的なネタで
MovableTypeを自力設置できる知識と技術力が前提の話です。
MovableTypeを使用していて、エントリーが増えてきた場合。
再構築をするとサーバエラー500に悩まされることはありませんか?
かといって、ブログデータの分割はやりたくない……(そりゃそうだ)。
そんなあなたにお届けします。
※スクリプトの改造を伴うので、必ずバックアップを取ってから行ってください。
また、改造は自己責任で。当サイトは一切責任を取りません。
原因は、一度に処理するアーカイブ数が増えることで処理時間がかかり、サーバがタイムアウトしてしまうから。
ならば、処理アーカイブ数を減らせばいいじゃなーい!
3.2xまでは mt.cfg の EntriesPerRebuild で、個別エントリを一度に処理する数を決めていました。
EntriesPerRebuild 20 ならば、20エントリーずつということです。
ですが3.3x以降は mt.cfg がなくなり、初期設定ファイルは mt-config.cgi に変わりました。
しかも EntriesPerRebuild の記述が無くなったのです。
あくまで記述がなくなっただけなので、最後尾にでも追加したらOK。
私の場合は EntriesPerRebuild 5 に設定しています。
ところがこれだけでは月別やカテゴリ別アーカイブの再構築でコケ続けることは変わりません。
lib/MT/App/CMS.pm の以下の記述で倍数として設定してあるからなのです。
my %Limit_Multipliers = (
Individual => 1,
Daily => 2,
Weekly => 5,
Monthly => 10,
Dynamic => 5,
);
例えば、前述の再構築処理アーカイブ数が初期設定の20だったとしたら、Dailyアーカイブはこの2倍の40、Weeklyは5倍の100、Monthlyは10倍の200エントリが再構築の1単位になるわけです。
そりゃあ、普通にタイムアウト(エラー500)になりますよ。
というわけで、私はサーバを騙して……
my %Limit_Multipliers = (
Individual => 1,
Daily => 2,
Weekly => 5,
Monthly => 2,
Dynamic => 2,
);
に設定。
Weeklyは未設定なので、EntriesPerRebuild 5 から計算すると、Dailyアーカイブはこの2倍の10、Monthlyも2倍の10エントリが再構築の1単位になるわけです。
これで小刻みにして少数ずつ処理することになり、負荷はかなり軽減されます。
ここでカテゴリーアーカイブは?と気づいたあなたは、立派なMTユーザ。
もう1つの難関、カテゴリーアーカイブが待ちかまえています。
こいつも一度に100エントリを再構築したりと、酔狂なことをしてくれます。
ですが対策は簡単!
my %Limit_Multipliers = (
Individual => 1,
Daily => 2,
Weekly => 5,
Monthly => 2,
Dynamic => 2,
Category=>1,
);
これで終了 (゚д゚)
いや、マジですって!ほんまにマジマジ!
ぜひお試しアレ。
また、英語圏からのスパムコメントやトラバに悩まされているあなたは、次のプラグインで解決。
1バイト文字のみのコメントやトラバを弾いてくれるので、かなり軽減されますよ。
◆blog.bulknews.net
Posted by ナカノヒト : 2007年05月08日 00:05 | コメント (0)