昨日、本ブログのテンプレートを誤って破壊してしまったのをきっかけに、継ぎ接ぎだらけでバラバラだったテンプレートの統一に着手した。 そんでもって、テンプレートの統一作業は午前中に完了し、再構築という段階になって「Internal Server Error」が出て止まってしまうという事象に遭遇。 全ての再構築を一気にやるからダメなんだと思って、カテゴリ別・月別の再構築をそれぞれやってみると問題ない。 で、残りのエントリーの再構築を行うと、80件目くらいで止まってしまう。
はてさて、どうしたものか…
エラーログの内容を見て、キーワードでググってみるとサーバの「メモリ不足」の可能性があると言うことなので、一時的に一部のプロセスを停止して再構築してみたけどダメ。 状況を確認しながら実行したら、メモリ不足には特に陥っていないことが判った。
次に見つけたのが、一度に再構築するエントリー数をデフォルトの40から減らしてみるというモノ。 で、段階的に減らしてみたモノの、全然効果無し。 エントリー数を1まで減らしてもダメだった。 ただ、ここで気が付いたのはCPU使用率が非常に高くて、再構築を走らせると100%になってしまう状況だった。
そこで着目したのは(っていうか残ったのは)データベース。 MySQLを使っているのだが、オーバーヘッドが出やすいので、オーバーヘッドのあるテーブルの最適化を実行したが、やっぱりダメ。
まさかと思って、MovableTypeの全テーブルを最適化してみた所、これが大正解!MySQLのCPU使用率が70〜80%だったものが20%前後まで激減。 現在、再構築を走らせている所なんだけど、順調に進んでいます。 ただ、一度に実行するエントリー数をデフォルトに戻して良いのかどうかは不明。 取り敢えず、1のまま処理させています。
さすがに、このブログだけでエントリー数は3,700もあるし、全ブログの総エントリー数は5,700にも及ぶのでテーブルがボロボロだったんだね。 時々、最適化してあげないとダメだな。
追記:結局、一筋縄では終わらなかったけど、何とか完了。
一日仕事になっちまったぜ!
コメント