無料ブログ「rentafree.net」の管理人ブログ

robots.txtへのリクエストに対してキャッシュを使うようにしました

robots.txtへのリクエストでエラーが発生し503が大量発生していることが判明したので、robots.txtの配信効率を上げるために、
robots.txtへのリクエストに対する応答時にLast-Modifiedを接続時刻で返し、100日以内の再接続時は304 Not Modifiedを返すように変更しました。

ただ、503が発生する前に1回だけ500が発生しているようで、その原因がApacheのモジュールレベルにある様で、
若干ログの出方が違うのですが、こちらの2014-12-30の記事に書いた件と症状が似て、
mod_aliasのバグが原因でmod_fcgidでエラーが発生しているような気がするので、mod_aliasの代わりにmod_rewriteを使うようにサーバー設定を変えてみました。

この記事を書いている間にエラーが発生していたのと同様と思われるリクエストが発生していたのですが、
正常に捌けているようなので、解決したと思います。

今後も問題が継続しているようなら、自動で監視と再起動をするようにして対応しようかと思います。


上記のmod_aliasバグは、ディストリビューター配信バージョンのApacheを使用しているのですが、
Apacheの公式ではこの件の修正がされているような記述を見たので、公式の最新バージョンでは存在しないのではないかと思います。
メモリエラーが発生した後にFastCGIのスロットがゾンビ化してmod_fcgidがエラーを吐く症状なのですが、
バグはmod_fcgidではなくmod_aliasに存在して、mod_aliasとmod_fcgidを併用すると問題が生じる気配。