Googlebot のアクセスが多すぎて悩ましい時の対処方法
その昔に Amazon の API が公開されたばかりの時に作った
− Butsuyoku.info :: 最新の口コミ情報を見ながら Amazon でショッピング!
なんですが、作ってすぐに興味もなくなり、口コミ情報といいつつ、API 変更にも対応せず口コミ情報が取得できない状態になっていたり、ボロボロ状態で数年放置状態なわけですが、Googlebot さまは一生懸命にクロールしに来てくれています。
ってかマジヤバイ。コンテンツキャッシュにMySQL を使って作ったんですけど、テーブルサイズがすぐに 4GB になっちゃいます。MySQL側の設定で 4GB 超え対応していないので、いつの間にか FastCGI がエラー吐きまくっていて Lighttpd 全体がフリーズしてしまう。なんてことが度々ありました。
Googlebot のアクセスはこんな感じ。毎秒アクセスしに来る感じです。つまり、86400 req/day です。
66.249.70.81 - - [08/Dec/2008:09:57:55 +0900] "GET /asin/B001HN6FYY HTTP/1.1" 200 15427 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:57:57 +0900] "GET /asin/404867255X HTTP/1.1" 200 15646 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:57:59 +0900] "GET /asin/4253231268 HTTP/1.1" 200 14537 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:00 +0900] "GET /asin/B00030GTQ6 HTTP/1.1" 200 16109 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:02 +0900] "GET /asin/4902800004 HTTP/1.1" 200 13724 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:06 +0900] "GET /asin/B000ASBG3C HTTP/1.1" 200 18134 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:08 +0900] "GET /asin/4844994654 HTTP/1.1" 200 15447 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:09 +0900] "GET /asin/4787815814 HTTP/1.1" 200 12020 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:12 +0900] "GET /asin/4526057975 HTTP/1.1" 200 12329 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:16 +0900] "GET /asin/B00005ABWZ HTTP/1.1" 200 18742 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:17 +0900] "GET /asin/4534036183 HTTP/1.1" 200 14684 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:19 +0900] "GET /asin/1847570070 HTTP/1.1" 200 12717 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:21 +0900] "GET /asin/4088514068 HTTP/1.1" 200 15887 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:23 +0900] "GET /asin/4883863336 HTTP/1.1" 200 15502 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.70.81 - - [08/Dec/2008:09:58:25 +0900] "GET /asin/B000VOAR08 HTTP/1.1" 200 16425 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" ・・・以下続く・・・
普通のブラウザアクセスがこんなにもあれば喜ばしい限りですが、アクセスの99%は Googlebot ですね・・・orz
さてさて、このサイトも僕自身すら使っていないのでクローズしようかなとも思ったりですが、このドメイン歴はそれなりにあるので Google のエージングフィルタ上、捨てるのはあまりにもったいない。
とはいえ、無駄にサーバリソースを喰いまくっているので、ひとまず robots.txt でアクセスを減らすように対応しようと試みました。
がっ! Googlebot はクロールの頻度を調節する Crawl-delay パラメータが効果なし。5分間隔でアクセスして欲しいと指定しているのに!
User-agent: Googlebot Crawl-delay: 300
Googlebot は robots.txt に対応していない話は有名みたいです。ぐぐるといろいろ情報が見つかります。Googlebot のクローラーの頻度設定は、Googleウェブマスターツール(要サイト登録)で設定可能です。詳細は Google のクロール頻度の変更をリクエスト - ウェブマスター向けヘルプ センター をご覧下さい。
1. Google アカウントを使用して、Google ウェブマスター ツールにログインします。
2. 該当するサイトの URL をクリックします。
3. [設定] をクリックします。
4. 希望するオプションをクリックします。
新たに設定したクロール頻度は 90 日間有効です。
がっ! Butsuyoku.info はサイト登録もしてない状況だし、今すぐクロール頻度を下げたい!そう思ったので思い切って Googlebot のアクセスを拒否するように設定しました。
User-Agent: Googlebot Disallow: /
じつはこの設定をしても数日間はいつもと同じくクローラーがアクセスしまくってましたが、その後アクセスは日時で robots.txt を参照しに来るだけになりました。
# grep Googlebot *.* access_log_L.20081212:66.249.72.143 - - [12/Dec/2008:10:17:04 +0900] "GET /robots.txt HTTP/1.1" 200 205 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" access_log_L.20081212:66.249.70.81 - - [12/Dec/2008:20:51:07 +0900] "GET /robots.txt HTTP/1.1" 200 205 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" access_log_L.20081213:66.249.70.81 - - [13/Dec/2008:20:51:17 +0900] "GET /robots.txt HTTP/1.1" 200 205 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
いやぁ〜えがったえがった。もちろん、普通に検索結果上位をねらってアクセス増を目指しているサイトなら、上記までの情報は全く必要ないのですが、bot のアクセスで負荷に悩む場合は参考になるでしょう。
ちなみに、Crawl-delay パラメータはクローラーのアクセスの間隔を秒単位で指定するものです。何故か Yahoo! の Slurp は分単位の指定っぽいですけど・・・まぁそれはそれ。一般的なクローラーのアクセス頻度を5分おきに設定したい場合はこんな感じの robots.txt で良いと思います。
User-agent: Slurp Crawl-delay: 5 User-agent: msnbot Crawl-delay: 300 User-agent: baiduspider Crawl-delay: 300 User-Agent: Teoma Crawl-delay: 300 User-Agent: Ask Jeeves Crawl-delay: 300 User-agent: yetibot Crawl-delay: 300
でもって、お行儀の悪い bot は robots.txt で弾いちゃいます。
User-Agent: Shim-Crawler Disallow: / User-Agent: Steeler Disallow: / User-Agent: Twiceler Disallow: / User-Agent: SafariBookmarkChecker Disallow: / User-Agent: BecomeBot Disallow: / User-Agent: NaverBot Disallow: /
もっとも robots.txt すら無視してくる bot も多数あるので、そのような場合は、apache.conf や lighttpd.conf レベルでアクセスを禁止するしかないです。そんな場合には fuki - fuga's Wiki - Apache を参考に、apache.conf を設定するよ良いと思います。
# Bad agent ※ googleは許可(笑) SetEnvIf User-Agent "pompos.html" BadRobot SetEnvIf User-Agent "WWWC" BadRobot SetEnvIf User-Agent "WebFetch" BadRobot SetEnvIf User-Agent "htdig" BadRobot SetEnvIf User-Agent "ia_archiver" BadRobot SetEnvIf User-Agent "Openfind" BadRobot SetEnvIf User-Agent "TurnitinBot" BadRobot SetEnvIf User-Agent "dloader" BadRobot SetEnvIf User-Agent "FAST-WebCrawler" BadRobot SetEnvIf User-Agent "Sidewinder" BadRobot SetEnvIf User-Agent "Mercator" BadRobot SetEnvIf User-Agent "BaiDuSpider" BadRobot # 040428 typo修正 by doggie SetEnvIf User-Agent "WISEnutbot" BadRobot SetEnvIf User-Agent "mogimogi" BadRobot SetEnvIf User-Agent "Rumours-Agent" BadRobot SetEnvIf User-Agent "Openbot" BadRobot SetEnvIf User-Agent "Scooter" BadRobot SetEnvIf User-Agent "SideWinder" BadRobot SetEnvIf User-Agent "CyberSpider" BadRobot SetEnvIf User-Agent "Gaisbot" BadRobot SetEnvIf User-Agent "InternetLinkAgent" BadRobot SetEnvIf User-Agent "slurp@inktomi.com" BadRobot SetEnvIf User-Agent "NPBot" BadRobot SetEnvIf User-Agent "searchhippo" BadRobot SetEnvIf User-Agent "grub-client" BadRobot SetEnvIf User-Agent "MSNBOT" BadRobot # ここまでは自前分 # 追加はここから SetEnvIf User-Agent "www.kokotoi.org" BadRobot # Zao/0.2対策 by doggie SetEnvIf User-Agent "Tkensaku" BadRobot # by doggie SetEnvIf User-Agent "HenryTheMiragoRobot" BadRobot # by たかはしようすけ # ここまでの間で <Files *> Order allow,deny Allow from all Deny from env=BadRobot </Files>
コメントやシェアをお願いします!
drk
ogijun さん>
情報有り難うございました。ぐぐって調べていたらランダムでエラーページを返すとか、他にもいろいろとテクがあるようですね。
まぁ一番良いのは Googlebot が robots.txt をちゃんと理解してくれることなんでしょうけど・・・
ogijun
もう解決したようですが、以前に自分が管理してるサイトがGooglebot大杉で困ったときは、しばらくウェイトを入れてやる(Googlebotのみ3秒とか5秒とか待たせてから結果を返す)ようにしたらそのうち頻度が減っていきました。
完全拒否まではしたくないときにはお試しください。