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倍。
  • 批量生成任务数量不应太大,这样才不会在后端产生太多的负载,并允许系统对队列更改做出快速反应。
  • 注意有关丢失的消息的警告。