0

我正在尝试使用 Heritrix 从一个特定域中抓取页面。

爬行速度似乎真的很慢。我注意到的一件事是,虽然有 25 个线程,但其中 24 个始终处于空闲状态。似乎只有一个线程主动从队列中获取 URI 并从服务器获取数据。

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

从邮件列表中找到答案:parallelQueuesqueueAssignmentPolicybean 中设置。

parallelQueues:默认值(和历史行为)为“1”。如果改为 N,则之前进入同一个单名队列的所有 URI 将进入 N 个相关队列(通过 URL 的路径查询部分的一致哈希映射)。基于一次一次的连接和取回之间的延迟延迟,每个队列都被单独考虑为传统礼貌——因此 N 个队列意味着 N 次提取可以同时针对一个站点进行。因此,应该只在覆盖设置中使用,应用于可能很好地处理多个连接的站点。

于 2015-09-13T18:39:54.107 回答