Movable Type アップグレード 秘話ブログ - :GIZMODO JAPAN編 - :第三話 MT4高速化しよう!講座の巻

Movable Type アップグレード 秘話ブログ - :GIZMODO JAPAN編 - :第三話 MT4高速化レッスンの巻

GIZMODO JAPAN

2006年からMT3で運営しつづけてきて、今や10,000 超エントリー。そりゃもちろん、再構築にも時間がかかります。だんだん再構築がつらくなってきて、MT4にアップグレードしてついに再構築高速化のテコ入れが必要!ということで、シックス・アパートの柳下先生による、MT4高速化講座が開かれました。

10,000 超エントリーだから、そりゃ再構築にも時間がかかります。

MT4高速しよう!講座中の柳下先生。
MT4高速しよう!講座中の柳下先生。

MT4.25から追加された、mt-tmpl-testで1エントリーの構築時間を調べてみたところ、0.7秒強。早くもないけど、遅くもないスピードです。10,000件でも7,000秒を超えるわけだから、全てを再構築で2時間を超えることは、単純に考えてもありうるわけです。

一般的にMTの再構築に影響を与えている点として、

1.ページ数
当然ですが、数が多ければ多いほど、再構築に時間がかかります。

2.テンプレートの構成
実はmt:includeのタグは処理に時間がかかるタグです。
再構築が重いと感じられる場合、 mt:includeを減らすことでかなり軽減されるようです。

3.システム構成、インフラ

MTはperlで出来ているので、リクエストがあるたびに処理しています。サーバーのメモリや処理能力は再構築の時間に大きく影響します。 fast.cgiによってレスポンスの速度変える方法もあります。

まずはテンプレートの見直し。mt:includeを減らすことからはじめましょう。

GIZMODOのインデックス・テンプレート
GIZMODOのインデックス・テンプレート

まずはテンプレート周りの見直しから取り掛かりましょう。エントリーアーカイブのテンプレートを見させていただいたところ、 mt:includeが10箇所ありました。確かに、mt:includeは様々な出力で共通項を管理する上で便利ですが、処理コストが重くなるというデメリットもあります。

一個のincludeファイルを変数で指定して呼び出す方法もかなり有効ですし、「SSI」を使ってファイルを呼び出すのもかなり有効な手段です。

また、一部をダイナミックパブリッシングにしたり、常に同じ内容を出力するのであれば、必要なときのみ (修正したときのみ) 再構築をするように設定し直しても良いでしょう。

リアルタイム更新する必要の無いインデックステンプレートの見直しも有効

「再構築時間 = 特定のテンプレートで処理される時間×テンプレートの種類」

毎回リアルタイムでの更新が必要ではない、インデックステンプレートをチューニングしましょう。

記事がアップする度にリアルタイムで更新する必要のないテンプレートまで再構築されている可能性があります。そのようなテンプレートは「公開キュー」や「ダイナミックパブリッシング」などの設定をすると有効です。(具体的にはこちらのドキュメントを読んでみてください。ブログの公開プロファイル | Movable Type 4 ドキュメント

例えばGIZMODO JAPANの場合、Google Site Mapを生成するテンプレートの再構築の時間が大幅にかかっていたことがわかり、Google Sitemapを公開キュー経由で出力するように設定して計測したところ、再構築時間を約半分にすることができました。

システム構成、インフラを見直してみましょう

いろいろ提案中。
いろいろ提案中。

まずは、 システムログのメンテナンスが重要です。

GIZMODOのコンテンツ量 (09-05-27時点) では以下のとおりです。

やはり163,000件を超えるログは無視できない存在で、DBサイズの20%程度を占めています。

早速、スカイアークさんのプラグインLogRotaterを紹介し、ログの定期的なメンテナンスを日常の管理業務にいれていただくようにご提案しました。

さらに他に今回ご提案させていただいたのは、

これらを見直すと、かなりの速度改善が見込まれます。

やっぱりページ数が再構築の速度に一番影響します。

これは運営方針にもよりますが、過去のエントリーはある程度まとめてブログとして分割するのが実は最も手っ取り早い高速化の道です。

過去の記事(たとえば年ごとで分ける)新しくブログとして切り離し、そもそも再構築させるページ数を減らすということです。サイドバナーやヘッダーなど、純粋なエントリーコンテンツ以外は、SSIなどでファイルを読み込ませておけば、違うブログでも表示は問題ないでしょう。

以上、柳下先生によるMT高速化講座でした。以上を実施すれば、「再構築するのに3時間ほどかかってしまう」問題も解決することができるでしょう。

ブログの規模が大きくなればなるほど、コンテンツの量に比例して再構築の時間がかるようになるのは当然です。大規模なサイトを運営する場合のMT設計の参考になればと思います。

GIZMODO 【座談会】MT4にして、ギズの何が変わったのか?

GIZMODO JAPAN のMT4にアップグレードした事について、ギズモード関係者を集めて、この新しいMovale Type について座談会を開きました。座談会の様子はGIZMODO の記事として紹介されています。

ブログメディアのギズモードとしては、ブログの行方は常に追い続けたいものですし、システム面でもMovable Typeとシックス・アパートの動向は見逃せません。 ブログとしてのギズモードの進化に乞うご期待ください。

先日7月8日にMT5を発表したばかり。MT3の方は今のうちにMT4にアップグレードしておいた方がいいかもしれません。かもしれません。

トラックバック

トラックバック URL

Comments

このページのトップへ