今日は半年前に導入した、過度なアクセスを排除している事実を説明しよう。ツイッターでは報告しているものの、ぶろぐに書いた記憶はないですしね。
みみずんさーばはアクセスログを取っているし、MRTGを使いデータの急激な変化を目視確認しています。
さて、MRTGのデータを見ているとグラフが尖っていることがあります。この時、転送量だけが上がっているのならば数Gbyteの映像を置いていることもあるので、特に気にしません。しかし、httpdのプロセス数も上昇しているとアクセス数が急激に増えたことを示しています。
そこで、アクセスログを見てみると・・・。一つのIPアドレスから1秒間に50以上ものリクエスト要求がある。どう考えても異常。やりすぎじゃないの!!!
そんな方にはお仕置きです。帯域幅制限超過を起こしたときに使用されるHTTPステータスコードがあり、この509を返します。実際には帯域幅の制限ではなく、アクセスが多いからエラーを返しているだけですが。。。まぁ、いいでしょ?
これを実現するのは、ApacheのDoS攻撃判定ツールmod_dosdetector。アクセスするIPを監視し、一定時間内に指定された値以上のアクセスがあれば、なんらかの判定を下すアイテムです。その判定結果をもとに、任意の処理を行うことが可能で、みみずんさーばでは503や509エラーを返すようにしています。
機械的なアクセスですから、人間が読んでくれるかどうか疑わしいのですが、509のエラー画面を用意しています。ここにはある条件で制限を解除するように書いていますので、大量のデータが欲しい方はご覧ください。制限解除ではない別の方法でデータを提供した実績もありますよ。
検索エンジンがクロールする分にはかまわないのですが、超高速クロールできるほど、うちのリソースは有り余っていないので、クロール速度はゆっくりでお願いします。ちなみに、Googleでさえ1秒間に最大10ページしか取得しないので、それ以下でお願いしますね。そうじゃないとBANよ。