Movable Type トラックバックやping送信時の500エラー対処法
MovableType エントリー投稿時にのトラックバックや ping を送信する処理において、500エラーが戻って来る事象が起きてしまいました。
原因を探ってみると、どうやら送り先のサーバーで処理に時間が掛かってしまい、レスポンスが戻ってくる前に Movable Type 側で勝手にタイムアウトしてしまったようでした。
MovableType の設定変更で対応
Movable Type には、外部サーバーへ HTTP リクエストを送る際のタイムアウト値が設定されています。初期設定は60秒です。
要するに Ping 送信時のレスポンスの待ち時間を延ばせば、タイムアウトエラーが発生しにくくなります。完全にエラーを排除できないのは、相手側のサーバーの状況が分からないため、いくらタイムアウトの時間を伸ばしても、レスポンスが戻ってこないケースがあるためです。
タイムアウト時間を延長する
タイムアウトの設定は mt-config.cgi に記します。Movable Type をインストールしたフォルダに格納されたファイルです。設定値の定義は次の通り。
#HTTPタイムアウト設定 HTTPTimeout 秒数
mt-config.cgi 上に記載がなければ、初期値60秒になります。記載する箇所は mt-config.cgi ファイル上であればどこでも構いません。追記したデータであることが分かるように、ファイルの末尾に追加するのがおすすめです。
Movable Type のリファレンスページには、サンプルとして300秒が設定されています。もしここまで待ちたくなければ、短くしても大丈夫です。30秒ずつ延ばして、様子を見ながら自身の環境にあった設定時間を見つけてください。
#HTTPタイムアウト設定(120秒で設定) HTTPTimeout 120
これで500エラーが出る頻度は少なくなるでしょう。まだ頻発するようであれば、もう少し時間を伸ばしてみたりトラックバックの送信先の見直しを行ってみてください。
MT3.3 より前は PingTimeout で設定
以前は同様のタイムアウト設定を PingTimeout で行っていました。設定の定義は同じですが、今は HTTPTimeout に置き換わっています。
PingTimeout は廃止された機能なので、ご注意ください。