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 コマンドを発行して時刻を表示する。
なんと1時間半弱もかかっている。何か対策を考えなければ。Berkeley DB を捨てるかな。
2005年8月16日追記:
EntriesPerRebuild に関する記述に誤記がありましたので,修正しました。修正箇所は右上の History ボタンで確認することができます。
Master Archive Index
Total Entry Count: 1957
EntriesPerRebuildは秒単位では無く、一度に再構成するエントリー数じゃないかと(基準は個別アーカイブで、その他のアーカイブの場合はEntriesPerRebuildを基準にした大きい数になります)
Posted by: ち印 at August 15, 2005 14:39これを小さめにしてみてはどうでしょう?
「さくらのレンタルサーバ」スタンダードでMySQLが使えるのにわざわざBerkeleyDBを使っている、うちのところは25にしてますね。
ち印さん
Posted by: n at August 16, 2005 14:07> EntriesPerRebuildは秒単位では無く、一度に再構成するエントリー数じゃないかと
おっと,その通りです。勢いで「秒」などと書いてしまいました。修正しておきます。