我有一个完全专用于基于 Storm-Crawler 的爬虫的节点。我拥有 20 个双核 CPU、130 Gb RAM 和 10Gb/s 以太网连接。
我将拓扑简化为:CollapsingSpout -> URLPartitionerBolt -> FetcherBolt。spout 正在从 Elasticsearch 索引(大约 50 M 记录)中读取数据。Elasticsearch 配置了 30 GB RAM 和 2 个分片。
我使用一个具有大约 50 GB RAM 专用于 JVM 的工作人员。使用不同的设置(线程总数,每个队列的线程数,最大挂起的 spout,一些与 Elasticsearch 相关的,例如桶数和桶大小)我可以达到 100 MB/s 的整体获取速度。但是,查看 ganglia 报告,它仅对应于我可用带宽的 10%。请注意,CPU 使用率约为 20%,RAM 不是问题。
我正在寻找一些关于什么可能是我的瓶颈的提示,以及关于如何调整/调整我的爬虫以充分利用我可用的资源的建议。
提前致谢。
艾蒂安