web-crawler - 加快爬取进程
问题描述
使用 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
解决方案
如果您正在爬取单个站点,那么您不需要 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。
推荐阅读
- sql - 每组最多 3 个值
- java - 寻找使用动态 Hitbox 和图形创建对象的方法
- java - MongoClient 是抽象的,无法实例化
- java - JDBC CallableStatement - 一次调用多个存储过程
- alloy - 我应该在合金“子模块”中有痕迹吗
- javascript - 在输入变化时更新 Vue 减法方法
- c# - 如何以一定速度将精灵的速度设置为与鼠标指针相反的方向?
- javascript - 用 Enzyme/Jest 模拟 Click Test 不调用 Sinon Spy
- azure - 通过 azure 功能中的 powershell 更改网站集管理员
- nginx - NGinx 在同一个应用程序实例上拆分测试两个页面