●【覚え書き】3.2-ja-2/サーバーの負荷軽減・まとめ(07/3/14版)
サーバーの負荷の軽減について、思いつく事と対策
【アーカイブ関係】
・不要なアーカイブファイルを作製しない/対策済み
……日別アーカイブ、月別アーカイブ、週間アーカイブ、カテゴリー別アーカイブ、そして個別アーカイブの全てが必要な訳じゃない。
(このブログでは、個別アーカイブとカテゴリーアーカイブのみ作成)
・カテゴリーを細分化し、カテゴリーアーカイブの肥大化を防ぐ
……カテゴリーアーカイブは分割再構築できないため、再構築時のタイムエラーを招きやすい
【テンプレート関係】
・テンプレートのモジュール可(要PHP可)/対策済み
……各テンプレートで共通の部分は、モジュール可して読み込ませるようにする。
私のブログでは、ファイルが大きくなるすぎたカテゴリーアーカイブの再構築時にエラーが出るようになりましたが、本文(EntryBody)までモジュール可させてみたところ、エラーを回避できるようになりました。
・負荷のかかるタグを使用しない/対策済み
……「MTCalendar」「MTArchiveList」「MTInclude(→テンプレートのモジュール可」)」など。
※注)私だけかもしれませんが、ファイルが肥大化しているカテゴリーアーカイブで旧暦表示プラグイン用のタグを使用すると、高確率でエラーが出るようになりました。
→日付からエントリー本文・追記までを、モジュール化(EntryBodyのモジュール化)させて回避。
・テンプレート/インデックスの「自動で再構築」 にチェックを入れるテンプレートの数を減らす。/対策済み
……「スタイルシート」は、スタイルシートを変更した時まみ再構築すればいいので、「自動で再構築」のチェックを外す。
【再構築関係】
・再構築を分割させる、必要なエントリのみを再構築する(「rebuild支援ツール for MovableType」の使用)/未使用
……注)MT3.2においては、個別エントリーの分割再構築のみ可能。
(カテゴリーと月刊アーカイブにおいてはエラーとなる)
・SmartRebuild(カテゴリーアーカイブ分割再構築プラグイン)/使用中
……カテゴリーアーカイブ分割再構築
注) 再構築エラー回避の試行錯誤において。カテゴリーアーカイブが分割再構築されないとの記述があったが、私の環境では分割成功。
・再構築時のエントリ数を減らす/「mt-config.cgi」の書き換え/対策済み
……「#EntriesPerRebuild 40 」の"#"をとり、数字を10〜20などに減らす。
(30〜40では、今のサーバーでエラーが出たが、20ならOKだった)
→ リビルドの回数は増えるが、一度に行う処理の量が減るので、タイムアウト等のエラーが出にくくなる。
ただし、カテゴリーアースイブは分割再構築できないので、カテゴリーを細分化する、SmartRebuildプラグインの使用などの工夫が必要な場合もあり。
・再構築時のエントリ数を減らす/「lib/MT/App/CMS.pm」の書き換え(6152付近)/対策済み
……「Weekly => 5,」 →「Weekly => 2,」
「Monthly => 10,」 →「Monthly => 2,」
「Dynamic => 5,」 →「Dynamic => 2,」 など
(MovableTypeで再構築にコケる)
・月別アーカイブ、カテゴリーアーカイブ等の分割表示(プラグイン「MTPaginate.pl」の使用)/対策済み
……注)表示させる際に分割表示ができるが、ファイル自体が分割されるわけではないので、再構築時の負荷は変化なし
【その他】
・ データーベースは「Berkeley DB」ではなく「MySQL」を使う。/対策済み
……再構築を繰り返すたびにfileinfo.dbが肥大化するらしい。
ただし、ロリポップにおいて「MySQLにすると一時的に解消するようですがエントリー記事が200以上になるとやはり再構築時に読み込みエラー(500エラー)が起きる」という事もあるようです。
(【重要】MT3.2-ja-2の再構築エラーの対処法)
データベースを変更するだけではなく、併せて上記ま対策を行うのが可という事で。