domon: 2007年10月アーカイブ
Movable Type 3.2-ja-2 で再構築エラーに関する質問を頂くことが多いので、本エントリーにまとめました。
1.エラー現象
「再構築エラー」とは、主に下記の現象を指します。
- 500エラーが表示される
- テンプレート内で MTLink タグを使用していると、そこでエラーとなる(場合がある)
いわゆる「500エラー」とは、 Internal Server Error つまり内部サーバエラーのことで、CGI等のプログラムが何らかの理由で実行できない、あるいはプログラムにエラーがある場合に発生します。
MTLink タグのエラーも500エラーと同様で、MTLink タグのエラーに見えるのは、たまたまそこでエラーメッセージを表示できる実装になっているからではないかと推測しています。
2.再構築エラーの原因
Movable Type で再構築エラーが発生する原因としては、これまで頂いたご質問を集計すると、
- Movable Type の DB に BerkeleyDB を使用
→ BerkeleyDB はお手軽ですがパフォーマンスに難があります - エントリー・アーカイブの再構築単位
→ デフォルトの再構築単位は40(エントリー)ですが、この値では再構築エラーになる確率が高いです - エントリー・アーカイブの「最近のコメント」で recently_commented_on を利用している
→ lastn 属性を使用しない recently_commented_on 属性の使用はメモリ消費量が増大します
によるものがほとんどのようです。
そしてこれらを誘発する原因として下記が考えられます。
- サーバのパフォーマンス
- サーバのメモリ量
よくある例として、複数名で共有しているレンタルサーバが考えられます。このケースでは CPU やメモリ等の事実上のスペックは、マシンを占有する人数や使用頻度に反比例して低下していきます。故に再構築の成功率も同時に低下することになります。
また上記の要因が複合すれば再構築エラーが発生する確率はさらに高くなります。
3.エラー解消方法
とりあえず目前のエラーを回避する方法と、本格的な対処の2通りを紹介します。
3.1 とりあえず回避する
- デフォルトテンプレートに戻す
デフォルトテンプレートの状態であれば再構築時のエラーはほぼ皆無という認識です。理由は次の内容をご覧ください。 - エントリー・アーカイブのサイドバーを削除してみる
例えば、当サイトの公開テンプレートとデフォルトテンプレートとの大きな違いは、アーカイブページのサイドバーの有無です。公開テンプレートのアーカイブ・テンプレートにはサイドバーにリスト類(カレンダー・最近のエントリー/コメント/トラックバック・カテゴリーリスト・月別アーカイブリスト)を色々と表示しており、その分、MTタグからHTMLマークアップを生成する時間が増加し、結果的に再構築時間に影響を与えることになります。つまりサイドバーにリスト類を表示している場合、それらを全てなくすことで再構築時間を短縮することができます。
なお、再構築エラーは前述の通り複合的な要因で発生します。公開テンプレートでアーカイブテンプレートのサイドバーに情報を表示すること自体についてはテンプレートのバグではありません。その点誤解なきようお願い致します。
3.2 本格的な対処
対処しやすい順番に並べています。
- 再構築単位を少なくする
mt-config.cgi の下記の部分を
から# EntriesPerRebuild 40
に書き換えます。10でもエラーになる場合は値をさらに小さくしてください。かなりの方がこれで解消されています。EntriesPerRebuild 10
3.3 では mt-config.cgi にこの設定自体がなくなっていますので新たに追加してください。
- rebuild支援ツールを利用する
再構築を部分的に行うためのツールです(プラグインではありません)。
rebuild支援ツール for MovableType
- DB を MySQL または SQLite または PostgreSQL に移行する
パフォーマンスに問題のある BerkeleyDB の使用をおやめになることを強く推奨します。SQLite の移行方法については、Movable Type + SQLite を参照ください。
MySQL自体の性能は高いのですが、ひとつのDBを多くのユーザでシェアしている場合は解消されないかもしれません。心配な場合はレンタルサーバのサポートに確認してください(自宅サーバ+MySQLはかなり快適です)。PostgreSQL については MySQL と同等とお考えください。
ロリポップの場合は SQLite への移行をお勧めします。
- PHPモジュール化を行う
サイドバーのリスト類をモジュール化(部品化)することで再構築時のパフォーマンスが向上します。ただし、ページ閲覧時に PHP が起動するため、アクセスの多いサイトでの CGI版 PHP の利用は 503 エラーを誘発する可能性があります。PHP モジュール化を行う場合は「条件付きGET」を有効にしてください。関連記事:
Movable Type の PHP化(その1)
PHPモジュール化の仕組みについて
HTTP/1.1 の「条件付きGET」を利用して PHP ファイルアクセスによるサーバ負荷を削減する
PHP における「モジュール版」と「CGI 版」の比較 + WordPress の適用例
- ダイナミックパブリッシングにする
ページを毎回動的に生成する方法です。静的なファイルを作らないため再構築時間が劇的に縮小します。関連記事:
Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その1:概要)
Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その2:設定方法)
- サーバを変更する
レンタルサーバもピンキリで、最終的にはサーバや DB のパフォーマンスに依存します。何をやっても事象が好転しない場合はこれをお勧めします。
今使っているルーターがプラネックス コミュニケーションズの【BLW-04FMG】を使っている
ネットワークを少し整理してみた
プライベートアドレス内でも2階層に分けている
WAN側:10.0.10.0 / 8
LAN側:192.168.10.0 / 24
・ルーター
プライマリLAN IPアドレス:10.0.10.254 / 255.0.0.0
セカンダリLAN IPアドレス:192.168.10.254 / 255.255.255.0
プライマリ接続:asahi-net-Client(動的IP)
セカンダリ接続:asahi-net.or.jp-Server(固定IP)
ポリシールーティング
32 * * * 10.0.10.0/8 * 0.0.0.0 asahi-net.or.jp-Server
・ネットワーク
サーバー(Linux)
WAN側:10.0.10.12
サブネット:255.0.0.0
ゲートウェイ:10.0.10.254
LAN側:192.168.10.12
サブネット:255.255.255.0
サーバー(Windows)
WAN側:10.0.10.2
サブネット:255.0.0.0
ゲートウェイ:10.0.10.254
LAN側:192.168.10.2
サブネット:255.0.0.0
クライアント
LAN側:192.168.10.50-99
サブネット:255.255.255.0
ゲートウェイ:192.168.10.254
これで、サーバー用途とクライアントインターネットアクセスの2つの通信を2つのISPで切り分けることができる
かな?
古いNECのMATEにFedora Core 4で稼働しているサーバー機を買い替えたい。
しかし、4年ほど安定稼働しているので、必要ないような!
でも、周りが最近機種でサーバーを立ち上げだしたので負けてられないので
やっぱり買い換えることに!!!
まずは、機種検討から
今の機種が【NEC MATEのPC-MA70H】
CPU:Celeron 733MHz
MEM:PC133 512MB
HDD:E-IDE 80GB
と結構しょぼい
でも、省スペースPCで静穏、省電力なので結構気に入っているので、この省スペースPCシリーズで行くか?安いサーバー機を新調するか?
実は省スペースPCシリーズの方が同じ新品なら値段が高い!
NEC Mate PC-MA20Vあたりはほしいところ、このあたりでオークションで10,000円くらい
それに、メモリを512MBに、ハードディスクを80GB×2でRAID1にするとプラス15,000円なり
安いサーバー機なら、最新CPUがのってるもののメモリ、ハードディスクを整備すると省スペースPC(オークション)の方がやすいかぁ~!
RAIDはどれも古いが手持ちの3枚からん認識するものを試してみる。
<Promise FastTrak100>
Support:RAID 0/1/0+1
Chip:PDC20267
SIF:Ultra ATA/100
<Promise FastTrak TX2000>
Support:RAID 0/1/0+1
Chip:
SIF:Ultra ATA/133
<Iwill SIDE RAID 100>
Support:RAID 0/1/0+1
Chip:
Speed:133MB/s
Movable Type 4.0は単なるブログではなく、CMSに近い存在として新機能を盛り込んでいるようだ。
通常のウェブページとブログを一括管理し、ページの更新を簡単に出来るようになっている。
今まででは、通常のウェブページと何かしらオーサリングソフトで作成し、ブログと組み合わせるパターンで
頻度のある更新内容をブログで、全体的なデザインを通常ウェブページでと組み合わせが、
Movable Type 4.0ではMovable Type 4.0だけで両方の作成・管理ができるようだ。
さっそく今利用している、Movable Type 3.2を4.0にバージョンアップしてみることに!
セットアップが簡単そうだが、旧データの移行がやばそう!
というのはMovable Type 3.2のDBが何を使っているか把握できていない!
Movable Type 3.2をセットアップした時は何も考えず行ったため、何も把握できていなかった!
Movable Type 4.0はMySQL データベースで行こう!
Movable Type 4.0を本日、製品版として出荷させていただきます。6月5日のベータテスト開始以降、多くのユーザー様から、沢山のフィードバックをいただきました。皆様のサポートのおかげで、正式版をリリースできましたことを、心から感謝申し上げます。
前バージョンの MT 3.3 (2006年7月11日) からは約1年、MT 3.0 (2004年5月13日) からは実に3年ぶりとなるメジャー・バージョンアップとなります。Movable Type が生まれた2001年以降、ブログの驚異的な普及と共に進化を遂げてきましたが、このバージョン4.0で、Movable Type は新たなステージにチャレンジをします。
ウェブサービスを超えた操作感
管理画面のデザインを一新しました。PC ソフトウェアのような操作感で、手軽にブログの管理をおこなうことができます。ブログ記事の投稿、テンプレート編集用のエディター機能も大幅に強化。誰でも表現力豊かなブログを公開することが可能です。
ウェブサイト全体を管理できる CMS として
ブログ記事だけでなく、通常のウェブページも効率的に作成することができます。画像などのファイルを管理する、ファイル・マネージャーも完備。さらには、コミュニティーでのサイト運用のために、『管理者』『デザイナー』『投稿者』など役割に応じたロール設定による、ユーザー権限の設定も可能です。ブログという枠を超えて、ウェブサイト全体を管理する高機能 CMS としてご利用いただけます。
既存の Movable Type 3.x からのアップグレード、および新規のインストールは、以下の MT4 マニュアルページをご参照ください。
デザイナー向けマニュアルや、MT4.0 に対応したタグリファレンスは、近日中に上記のページで公開予定です。また、Movable Type に関する、様々な技術ノウハウをご紹介している『技術情報提供ブログ』も、併せて RSS フィードなどでご購読いただければと思います。
プラグイン開発者の皆様へ
Movable Type 4.0 は、Six Apart の最新テクノロジーを取り入れた、新しいアーキテクチャが採用されています。多くの新機能が追加され、管理画面のデザインも刷新されています。そのため、MT3 用に作られたプラグインは、MT4 向けの修正が必要な場合があります。Six Apart は、このようなプラグインの MT4 対応を、積極的にサポートさせていただきたいと考えております。MT のチーフ・アーキテクトである、Brad Choate の来日にあわせて、2007年8月25日に Movable Type Hack-a-thon を開催します。半日にわたって、Movable Type 開発者と共にコードを書く、プログラマー向けのイベントに、ぜひご参加いただければと思います。
最後に今一度、ベータテストへのご参加と、フィードバックに Six Apart 一同、感謝申し上げます。ご貢献いただいたログは、以下のページに Change Log として刻まれています。
それでは、新しくなった Movable Type を、ぜひお楽しみください!