印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType 日付別アーカイブの再構築に失敗する

Date-Based Archive の再構築に失敗するというエラーが起きた。直接的にはサーバの処理能力が低いことに起因する。Movable Type の設定や,Apache の設定変更で対応することができる。それにしても再構築に時間がかかり過ぎているのが気に掛かる。

■ ■ ■

環境は Movable Type 2.661 + 日本語化パッチである。「サイトの Rebuild」→「Daily アーカイブだけ」で日付別アーカイブの再構築を行う。

日付別アーカイブの再構築中の表示
日付別アーカイブの再構築中の表示

ページ Daily から 1 - 80 まで再構築中...

と表示される。しばらくすると,次の表示になる。

再構築中に応答がなくなる
再構築中に応答がなくなる

サーバーが見つかりません
ページを表示できません。
検索中のページは現在、利用できません。Web サイトに技術的な問題が発生しているか、ブラウザの設定を調整する必要があります。

Mozilla で再構築した場合,エラーは表示されず,ずっと「ページ Daily から 1 - 80 まで再構築中...」と表示されたままになる。サーバのプロセスを見ると mt.cgi のプロセスはなくなっている。Apache のログを調べると,正常に終わっている。エラーではないのだ。これの原因と対策は 再構築失敗(Rebuild error)/お気楽極楽ブログ さんで解説されている。対策方法は2種類あって,mt.cfg の EntriesPerRebuild (秒)の数値を小さくするか,httpd.conf の Timeout の値と KeepAliveTimeout の数値(秒)を大きくすればよい。EntriesPerRebuild のデフォルト値は 40 で,この時日付別アーカイブは 80 個ずつ一括で再構築される。1回の処理に時間がかかりすぎて,Apache がタイムアウトを起こしてしまうのである。

最近,記事数も増えてきて再構築に時間がかかるようになっている。現在の記事数は 535。自宅サーバの構成は,ThinkPad T22(2647-9EJ), Mobile Pentium III 1 GHz, 512 MB であるからそれほど悪いスペックではないと思うのだが,反応が鈍い。そこで,再構築にかかる時間を調べてみることにした。

使うのは mt-rebuild スクリプトである(nlog(n): cron でインデックスを再構築)。mt-rebuild の前と後に date コマンドを発行して時刻を表示する。

$ date; /home/httpd/opentype/mt-rebuild.pl -mode="all" -blog_id=1; date
2005年  8月 13日 土曜日 21:42:29 JST
2005年  8月 13日 土曜日 23:04:10 JST

なんと1時間半弱もかかっている。何か対策を考えなければ。Berkeley DB を捨てるかな。

2005年8月16日追記:
EntriesPerRebuild に関する記述に誤記がありましたので,修正しました。修正箇所は右上の History ボタンで確認することができます。

Posted by n at 2005-08-13 23:33 | Edit | Comments (2) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

EntriesPerRebuildは秒単位では無く、一度に再構成するエントリー数じゃないかと(基準は個別アーカイブで、その他のアーカイブの場合はEntriesPerRebuildを基準にした大きい数になります)
これを小さめにしてみてはどうでしょう?
「さくらのレンタルサーバ」スタンダードでMySQLが使えるのにわざわざBerkeleyDBを使っている、うちのところは25にしてますね。

Posted by: ち印 at August 15, 2005 14:39

ち印さん
> EntriesPerRebuildは秒単位では無く、一度に再構成するエントリー数じゃないかと
おっと,その通りです。勢いで「秒」などと書いてしまいました。修正しておきます。

Posted by: n at August 16, 2005 14:07
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?