To kill one's boredom...RO

「心にうつりゆくよしなしごと」について


「心にうつりゆくよしなしごと」について

<710>Technology-技術情報 たまには実用的なネタで

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)

この記事へコメントする

(コメントを投稿すると、サイト管理者へ承認を行います。投稿したコメントが表示されるためには、サイト管理者の承認が必要です。承認には少々お時間がかかりますので、しばらくお待ちください。)