7

Facebook は Web クローラーを実装したばかりですか? 私のウェブサイトは、過去数日間で数回クラッシュし、Facebook にさかのぼる IP によってひどく過負荷になりました。

グーグルで検索してみましたが、robots.txt を介した Facebook のクローラー ボットの制御に関する決定的なリソースを見つけることができません。次の追加に関する参照があります。

ユーザーエージェント: facebookexternalhit/1.1 クロール遅延: 5

ユーザーエージェント: facebookexternalhit/1.0 クロール遅延: 5

ユーザーエージェント: facebookexternalhit/* クロール遅延: 5

しかし、Facebook ボットが robots.txt を尊重するかどうかについての具体的な参考文献は見つかりません。古い情報源によると、Facebook は「あなたのサイトをクロールしません」。しかし、これは間違いです。私のサーバー ログは、69.171.237.0/24 と 69.171.229.115/24 の範囲の 12 以上の IP から、毎秒多くのページの速度で私のサイトをクロールしていることを示しているからです。

そして、これに関する文献を見つけることができません。サーバーが以前にクラッシュしたことがないため、FB が過去数日間に実装したばかりの新しいものであると思われます。

誰かアドバイスをお願いできますか?

4

3 に答える 3

3

facebookとCrawl-delayに関するこの同様の質問で説明されているように、facebookはそれ自体をボットとは見なさず、robots.txtを要求することすらなく、その内容に注意を払う必要はありません。

同様の質問リンクに示されているように、独自のレート制限コードを実装できます。サーバーの容量が不足している場合、または特定のユーザーエージェントが氾濫している場合は、単にhttpコード503を返すという考え方です。

巨大なテクノロジー企業で働いている人たちは、「キャッシュを改善する」ということは、中小企業が処理する予算がないことを理解していないようです。私たちは実際にお金を払っている顧客にサービスを提供することに焦点を当てており、「友好的な」企業からの暴れ回るWebボットをかわす時間がありません。

于 2012-11-09T16:56:49.447 に答える
1

ほぼ同時期 (10 月中旬) に同じ動作が確認されました。Facebook からの要求が殺到し、要求がキューに入れられ、システム全体の速度が低下しました。最初は 90 分ごとでした。数日のうちに、この頻度が増加し、ランダムに分布するようになりました。

リクエストは robots.txt を尊重していないように見えたため、別の解決策を考えざるを得ませんでした。最後に、Facebook ユーザー エージェントを使用したすべてのリクエストを専用のバックエンド サーバー ペアに転送するように nginx を設定しました。nginx > v0.9.6 を使用していた場合、これに対して適切な正規表現を実行できたはずですが、そうではなかったため、次の行に沿ってマッピングを使用しました。

    map $http_user_agent $fb_backend_http {
             "facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)"
                    127.0.0.1:80;
     }

これは私たちにとってうまくいきました。私たちが打撃を受けていた数週間の間、このリクエストの分割により、システムの残りの部分から大量のトラフィックが遠ざけられました.

現在は大部分が落ち着いているように見えますが、断続的なスパイクが見られるだけです。

なぜこれが起こったのかについては、まだわかりません.4月に同様の事件があったようで、バグ http://developers.facebook.com/bugs/409818929057013/ が原因でした.最近似たようなもの。

于 2012-11-02T15:43:10.810 に答える
0

Facebookが発明したものは何でも、外部リクエストでサーバーをクラッシュさせる可能性があるため、サーバーを修正する必要があります.

また、Google での最初のヒットfacebookexternalhit: http://www.facebook.com/externalhit_uatext.php

于 2012-10-14T08:43:54.907 に答える