Movable Type 3.2 でメモリ不足でサーバエラーが頻繁する対策を少し探ってみた。EntriesPerRebuild 値を調整することで改善された。
「サイトを再構築」をインデックス,エントリーアーカイブ,...とひとつずつやっていくと,月別アーカイブ作成でエラーとなる場合が多い。これは多くのエントリーをまとめて処理するため,それに応じたエリアを一度に要求する MT 仕様によってきたるようである。そこで少しずつやる手だてはないかと,Google で探してみたら,あった。
mt-config.cgi という MT の動作カスタマイズ用 cgi スクリプトがあり,そこに EntriesPerRebuild なるパラメータがある。デフォルトは 40 である。エントリーアーカイブ作成などはこの数値ごとにまとめて処理されるようである。月別アーカイブ作成は,この数字を適当に弄って試した限りにおいて,これの 10 倍値ごとに束ねて処理されるようである。つまり標準値は 40 x 10 = 400。
いま現在,本サイトの記事数は 200 程度なので,この半分ずつ処理させるとして EntriesPerRebuild を 10 に設定したら,おおむねうまくいった。デフォルト値の 1/4 の設定であって,処理時間がトレードオフとなるのが想定される。が,背に腹は変えられない。
これでようやく,落ち着いて記事を登録できるようになったかと思ったら,カテゴリーアーカイブで引っかかる場合がある。これの分割はどうもできないのか。うーむ。ところで,このメモリ不足によるエラーが httpd-error.log には "Premature end of script headers" と出力されるのはどうも解せない。
MT の登録エントリー数が増えてアーカイブ作成でエラーが発生するようになって困っている方。EntriesPerRebuild 値調整は,それでも,お試しあれ。