【问题标题】:Increasing number of threads增加线程数
【发布时间】:2015-12-09 17:25:23
【问题描述】:

我正在尝试使用 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 个线程吗?我已经发现并更改了与礼貌相关的配置(最小/最大延迟)谢谢!

【问题讨论】:

  • 闲置是什么意思?您的意思是他们没有执行任何任务还是正在等待下载数据。
  • @PeterLawrey 我继续在“线程”部分下看到“24 ABOUT_TO_GET_URI”。所以我认为他们没有做任何工作。我还看到 25 个线程中有 0/1 处于活动状态。

标签: java multithreading web-crawler heritrix


【解决方案1】:

从邮件列表中找到答案:在queueAssignmentPolicy bean 中设置parallelQueues

parallelQueues:默认值(和历史行为)是 '1'。如果 而不是 N,之前进入同一个单名的所有 URI 队列将进入 N 个相关队列(通过一致的哈希映射 URL 的 path?query 部分)。每个队列都被考虑 分别用于基于一次一个的传统礼貌 连接和贪睡延迟 - 所以 N 个队列意味着 N 提取可能会同时针对一个站点进行。因此,应该只 用于覆盖设置,应用于可能处理的网站 多个连接良好。

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多