この10日ほど、Trend Antenna にアクセスしにくい状況が続いています。データベースサーバに負荷がかかっているために、PHP の実行に制限がかかっているようです。
エラーが出始めてから、データベースの構造を改善したり、SQL文の書き方を工夫してみたりしました。しかし、好転の兆しが見えず、かえって状況は悪化…。
そんなときに、アクセス解析を眺めていたら、Naver のロボット、Yeti が大量にアクセスしてきていることが判明しました。普段、ロボットを除いたアクセス解析しか見ていなかったので気付かなかったのですが、改めて見てみると、全体の転送量の60%以上が Yeti によるアクセス。他の検索エンジンのロボットがせいぜい5〜6%なのに比べると、大きな違いです(ちなみに、Googlebot によるアクセスは、訪問回数こそ多いものの、転送量は非常に小さく、同じ内容のデータを読まないような配慮がされているように思います)。
Naver 経由のアクセスもありませんし、人間のアクセスに支障が生じてまでロボットに配慮する必要はありませんから、Yeti を追い出すことにしました。
方法としては、.htaccess と、robots.txt を併用することにしました。単にアクセス禁止にするだけだと、リソースの無駄遣いは減らせるものの、アクセス数そのものは減らせないからです。
まず、.htaccess によるアクセス制限ですが、こちらは IPアドレスベースの制限をかけることにします。私のページにアクセスしてきたロボットの IPアドレスを JPNIC の Whois にかけて調べると、運営者である NHN Japan 株式会社が使用している IPアドレスが確認できます(結果)。これをすべてアクセス禁止にしてもよいのですが、それも気の毒なので、今回は 119.235.237.0/24 だけを制限することにしました(成果が出なければ拡大します)。また、後で述べるように robots.txt を読ませたいので、.htaccess に追加した記述は最終的に以下のようになります。
Order allow,deny
Allow from all
Deny from 119.235.237.0/24
<Files robots.txt>
order deny,allow
allow from all
</Files>
次に、robots.txt の記述ですが、こちらは簡単で、
User-agent: Yeti Disallow: /
これだけ。これで、robots.txt 以外へのアクセスを遮断したうえで、robots.txt を解釈してくれるのであれば、私のサイトに来てはいけないということを認識してくれるはずです。
早く成果が挙がることを祈ってます。
Baidu の BaiduMobaider もお行儀が悪いので、追い出すことにしました。こちらについては、IPアドレスの範囲が、119.63.195.0/24 なので(Baidu のクローラー情報ページ)、.htaccess に
Deny from 119.63.195.0/24
を追加しました。大量のアクセスでリソースを食いつぶされてしまうのは、本当につらい…(2010年7月22日:追記)