Node.js webcrawler无法同时传输50多个传出连接

时间:2016-04-21 07:45:43

标签: node.js web-crawler

我试图处理大量网址(例如50000),检查网页上是否有某个字符串。我为列表中的每个网址使用节点0.10,npm request模块和async.eachLimit,我的目标是确保此节点应用程序尽可能快地处理网址列表。

我将超时设置为20秒。问题是,一旦我将eachLimit值(例如请求并发)设置为高于50-100的任何值,在几分钟之后,大多数网址最终都会计时。我已经确认这些网址确实在运行。 nload没有显示任何高网络使用率,服务器上剩余大量的CPU和内存(没有其他内容正在运行),所以为什么不能节点稳定处理500个网址一次?

即使网址位于不同的IP上,我也会尝试将globalAgent.maxSockets设置为200k无效。

1 个答案:

答案 0 :(得分:-1)

所以我不确定内部的运作方式,但我已经解决了这个问题。

之前 - 我正在超时,网络使用率最多不超过2 mbps。我已尝试将该过程分为16个(8个核心处理器,但它不是cpu绑定的,增加的叉号超过核心数证明是有益的)而不是我得到大约10倍的任务数每秒网络使用率平均为35 mbps。