0

Heritrix を使用して、ある特定のドメインからページをクロールしようとしています。

クロール速度は非常に遅いようです。そして、1 つ気づいたことは、25 のスレッドがある一方で、そのうちの 24 は常にアイドル状態になっているということです。アクティブにキューから URI を取得し、サーバーからデータを取得しているスレッドは 1 つだけのようです。

Rates
0.33 URIs/sec (0.34 avg); 18 KB/sec (20 avg)
Load
1 active of 25 threads; 1 congestion ratio; 13193 deepest queue; 13193 average depth
Elapsed
1h32m3s424ms
Threads
25 threads: 24 ABOUT_TO_GET_URI, 1 ABOUT_TO_BEGIN_PROCESSOR; 24 noActiveProcessor, 1 fetchHttp 
Frontier
RUN - 2 URI queues: 1 active (1 in-process; 0 ready; 0 snoozed); 0 inactive; 0 ineligible; 0 retired; 1 exhausted 
Memory
79933 KiB used; 143508 KiB current heap; 253440 KiB max heap

25 個のスレッドすべてを利用するために使用できる構成はありますか? 私はすでに礼儀正しさ(最小/最大遅延)に関連する構成を発見して変更しました ありがとう!

4

1 に答える 1

3

メーリング リストから回答が見つかりました: Bean のparallelQueues設定。queueAssignmentPolicy

parallelQueues: デフォルト値 (および過去の動作) は「1」です。代わりに N の場合、以前に同じ単一名のキューに入ったすべての URI は、N 個の関連するキューに入れられます (パスの一貫したハッシュ マッピングを介して: URL のクエリ部分)。各キューは、一度に 1 つずつの接続とフェッチ間のスヌーズ遅延に基づく従来の丁寧さのために個別に考慮されます。したがって、N キューは、サイトに対して N フェッチが一度に進行している可能性があることを意味します。したがって、オーバーレイ設定でのみ使用し、複数の接続を適切に処理する可能性が高いサイトに適用する必要があります。

于 2015-09-13T18:39:54.107 に答える