bingbotのクロール頻度が多すぎて重いので、robots.txtで調整した

サイトを運用していると、時たま謎のサーバー負荷に悩まされることがありますが、今回はBingのクローラーがやらかしてたという話です。

2013/1/16 追記:robots.txtでも調整できない場合の対策も盛り込みました。

ユーザーのアクセスが最も多いお昼時の時間帯でこれですよ。

157.55.35.85 - - [29/Oct/2012:14:07:25 +0900] "GET /***/ HTTP/1.1" 200 5503 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:25 +0900] "GET /***/ HTTP/1.1" 200 5503 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:26 +0900] "GET /***/ HTTP/1.1" 302 572 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:26 +0900] "GET /***/ HTTP/1.1" 302 572 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:27 +0900] "GET /***/ HTTP/1.1" 200 10168 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:27 +0900] "GET /***/ HTTP/1.1" 200 10168 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.36.52 - - [29/Oct/2012:14:07:28 +0900] "GET /***/ HTTP/1.1" 200 9638 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.36.52 - - [29/Oct/2012:14:07:28 +0900] "GET /***/ HTTP/1.1" 200 9638 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:28 +0900] "GET /***/ HTTP/1.1" 200 3924 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:28 +0900] "GET /***/ HTTP/1.1" 200 3924 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:29 +0900] "GET /***/ HTTP/1.1" 302 572 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:29 +0900] "GET /***/ HTTP/1.1" 302 572 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
msnbot-157-55-36-52.search.msn.com - - [29/Oct/2012:14:07:30 +0900] "GET /***/ HTTP/1.1" 200 4390 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:30 +0900] "GET /***/ HTTP/1.1" 403 411 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:30 +0900] "GET /***/ HTTP/1.1" 403 411 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:32 +0900] "GET /***/ HTTP/1.1" 200 4211 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:32 +0900] "GET /***/ HTTP/1.1" 200 4211 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:33 +0900] "GET /***/ HTTP/1.1" 200 4295 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
157.55.35.85 - - [29/Oct/2012:14:07:33 +0900] "GET /***/ HTTP/1.1" 200 4295 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
...

/***/ はダミーです。 実際のアクセス先はすべて異なるURLです。

1秒間に平均2回、多い時は4回以上ですよ。 静的なページであればともかくDBアクセスが必要なページにガンガンアクセスしてきます。

いやね、インデックスしてくれるのは嬉しいんですが、ちょっとやりすぎじゃないですかと。
この頻度はページ数が多く、更新頻度が高いページであればあるほどbingbotのクローラー攻撃の激しさが増します。

というわけで、ちょっと調整しますよ。

robots.txtで調整

今回は以下のようにrobots.txtに書き込んでみました。

User-agent: bingbot
Crawl-Delay: 5

これは「bingbotクローラーに対して5秒に1回の頻度でページにアクセスしてください」という意味です。

これで調整した結果、以下のように正確な秒間隔ではありませんが、クロールの頻度が10秒間隔くらいになっていることが確認できました。

msnbot-157-55-33-21.search.msn.com - - [05/Nov/2012:10:18:49 +0900] "GET /xxx/ HTTP/1.1" 200 7616 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
msnbot-157-55-33-112.search.msn.com - - [05/Nov/2012:10:19:02 +0900] "GET /xxx/ HTTP/1.1" 200 6979 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
msnbot-157-55-33-112.search.msn.com - - [05/Nov/2012:10:19:14 +0900] "GET /xxx/ HTTP/1.1" 200 7536 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
msnbot-157-55-33-112.search.msn.com - - [05/Nov/2012:10:19:22 +0900] "GET /xxx/ HTTP/1.1" 200 7501 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

もちろん、秒数をもっと長くすればかなり負荷を抑えられるんですけど、あんまり間隔を開けすぎるとbingbotクローラーがちょっとのページしかクロールせずに帰ってしまうというデメリットもあるわけです。

bingbotも他にまわるサイトが沢山あるわけですし、自分のサイトにそんなに時間をかけてくれるわけでもありません。

ですから、負荷のかからない範囲でなるべく短時間に多くまわってもらえる間隔を設定する、というのがベストだと思います。

ぜひ試してみてはいかがでしょう?

One More Thing: それでも止まないBingbot攻撃の場合…

robots.txtで調節したのに全然減ってくれない!とお嘆きのあなたには最後の手段。
Bingウェブマスターツールにアカウント登録して、クロール頻度を直接調整しちゃいましょう。

2013年に入ってから、GoogleBotの後を追うようにBingBotが来襲し、かつクロール数も多いのでrobots.txtが効いてくれない事態が起こっているようです。

Bingウェブマスターツール登録後に「ダッシュボード > 自分のサイトの設定 > クロール制御」を選択すると、サイトへbingbotがクロールしに来る頻度をブロックで調整できます。

bing-webmaster-clawl-modify.gif

各時間ごとの頻度もカスタムで調整できるので、どうにもできないとなった場合に利用してみてくださいませ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2012-10-29