首页 > 解决方案 > 加快爬取进程

问题描述

使用 ES 6.5.x 和 Storm crawler 1.10。如何加快爬虫获取记录的速度。当我检查其显示的指标时,平均每秒显示 0.4 页。在下面的爬虫配置中我需要更改什么吗? 在此处输入图像描述

履带式会议:

config: 
  topology.workers: 2
  topology.message.timeout.secs: 300
  topology.max.spout.pending: 100
  topology.debug: false
  fetcher.server.delay: .25
  fetcher.threads.number: 200
  fetcher.threads.per.queue: 5

  worker.heap.memory.mb: 2048

  topology.kryo.register:
    - com.digitalpebble.stormcrawler.Metadata

  http.content.limit: -1
  fetchInterval.default: 1440
  fetchInterval.fetch.error: 120
  fetchInterval.error: -1
  topology.metrics.consumer.register:
     - class: "org.apache.storm.metric.LoggingMetricsConsumer"
       parallelism.hint: 1

标签: web-crawlerstormcrawler

解决方案


如果您正在爬取单个站点,那么您不需要 2 个工作人员或多个 ES 分片和 spout!无论如何,所有 URL 都将被定向到单个分片!

您每个队列使用 5 个线程,但每个存储桶仅从 ES 检索 2 个 URL(es.status.max.urls.per.bucket: 2)并在调用 ES 之间强制 2 秒(spout.min.delay.queries: 2000)所以平均而言,spout 每秒不能产生超过 1 个 URL。ES_IndexInit.sh中的refresh_interval也会影响索引中更改的可见速度,从而影响您从请求中获取新 URL 的可能性。

只需将 es.status.max.urls.per.bucket更改为更大的值,例如 10,然后将spout.min.delay.queries更改为与ES_IndexInit.sh中的refresh_interval 相同的值, 例如1 秒。这将为您提供更多的 URL。


推荐阅读