Frontera 集群优化¶
为什么爬行速度如此之低?¶
寻找瓶颈。
- 所有请求都针对少量的几个网站,
- DNS 解析(参考 DNS Service ),
- strategy worker 性能问题
- db worker 生成任务不足
- HBase 相应时间过长
- 集群内的网络过载。
优化 HBase¶
- 在 HBase 中增加块缓存。
- 在每个 HBase 区服务器上部署 Thrift 服务器,并将负载从 SW 传播到 Thrift。
- 启用 Snappy 压缩 (参照
HBASE_USE_SNAPPY
).
优化 Kafka¶
- 将日志大小降至最低,并优化系统以避免在 Kafka 存储大量数据。 一旦写入数据,它应尽可能快地消耗。
- 使用SSD或甚至RAM存储 Kafka logs,
- 启用 Snappy 压缩。
各种组件之间的流量控制¶
MAX_NEXT_REQUESTS
用于控制批量任务大小。 在爬虫配置中,它控制每个 get_next_requests
调用返回多少任务。同时在 DB worker 中配置它,它会设置每个分区生成的任务数。 设置这些参数时要牢记:
- DB worker 和爬虫值必须保持一致,以避免消息总线过载和消息丢失。 换句话说,DB worker 产生的任务要比爬虫消耗的要少一些,因为即使DB worker还没来得及产生新的任务,蜘蛛应该仍然可以获取新的页面。
- 爬虫消费率取决于许多因素:互联网连接延迟,蜘蛛解析/抓取工作量,延迟和自动限制设置,代理使用等。
- 保持爬虫任务队列总是满的,以防止蜘蛛空闲。
- 一般建议是设置 DB worker值比爬虫大2-4倍。
- 批量生成任务数量不应太大,这样才不会在后端产生太多的负载,并允许系统对队列更改做出快速反应。
- 注意有关丢失的消息的警告。