1


0

Webクローラーのパフォーマンス

非常に一般的な状況(自家製のアマチュアWebクローラー)で、そのようなパフォーマンスがどうなるかを知りたいです。 より具体的には、クローラーが処理できるページ数。

ホームブリューと言うと、2.4Ghzコア2プロセッサ、書かれたJava、50mbitインターネット速度など、あらゆる意味でそれを取り入れます。

この点で共有できるリソースは大歓迎です

どうもありがとう、

カルロス

3 Answer


5


まず、コンピューターの速度は制限要因ではありません。接続に関しては、クローラーの速度を人為的に_制限_する必要があります。ほとんどのサイトは、攻撃を開始するとIPアドレスを禁止します。 言い換えれば、サイトをあまり速くクロールしないでください(99.99%のサイトではリクエストごとに10秒以上で問題ありませんが、自分の責任でそれを下回ってください)。

したがって、単一のサイトを複数のスレッドでクロールできますが、各スレッドが異なるサイトをクロールすることをお勧めします(共有IPアドレスでもないかどうかを確認します)。そうすることで、スパイダーサイトから禁止される可能性を低くして接続を飽和させることができます。

サイトによってはサイトの一部をクロールすることを望まないサイトもあり、一般的に使用する必要があるメカニズムはhttp://www.robotstxt.org/[robots.txt]ファイルです。 リンクされたサイトを読んで、これを実装してください。

また、一部のサイトでは自動クロールがまったく禁止されていることに注意してください。サイトの管轄に応じて(あなたにも適用される場合があります)、これを破ることは違法である可能性があります(スクリプトが行うことに対して責任があります。


2


私の経験では、ほとんどがサイトスクレイパーを作成しているため、ネットワークダウンロードは常に制限要因です。 通常、次のページをダウンロードするのにかかる時間よりも短い時間で、ページの解析(または後で解析するためのストレージ)を別のスレッドに移動できます。

したがって、平均して、Webページのダウンロードにかかる時間を把握してください。 接続のスループットがいっぱいになるまでダウンロードしたスレッドの数で乗算し、特定のWebサーバーの速度を平均します。計算はかなり明白です。


0


プログラムが十分に効率的であれば、インターネット接続が制限要因になります(Robert Harveyが彼の答えで述べたように)。

ただし、自宅のインターネット接続でこれを行うと、おそらくプロバイダーの利用規約を悪用していることになります。 彼らはそれを監視し、合理的な使用ポリシーを頻繁に超えている場合は最終的に通知します。

さらに、透過プロキシを使用している場合、ダウンロード制限に達するかなり前にプロキシを破壊する可能性があるため、注意してください-ISPのプロキシを透過または他の方法で通過しないようにしてください。

ISPは、ほとんどのユーザーが中程度のレベルのブラウジングをいくつかの大規模なストリーミング操作(ビデオまたはその他のダウンロード)で行えるように設定されています。 一度に100を超える未処理の大規模な小さなリクエストは、多くの帯域幅を使用しなくても、おそらくプロキシサーバーを満足させることはありません。