使用http.request时Nodejs的性能如何扩展?

时间:2012-02-15 18:21:44

标签: javascript node.js web-scraping

我正在编写一个大量使用http.request方法的应用程序。

特别是,我发现同时发送16 + ~30kb的请求真的使512mb RAM机器上的Nodejs实例陷入困境。

我想知道这是否是预期的,或者Nodejs是否只是出站请求的错误平台。

2 个答案:

答案 0 :(得分:1)

是的,这种行为似乎非常合理。

如果它正在完成您描述的工作而没有任何明显的系统负载(在这种情况下需要很长时间),我会更加担心。请记住,节点只是一个公平的I / O运行时,因此您可以确信它正在按照底层系统的速度调度您的I / O请求(大约),因此它正在使用系统(几乎)最大潜力,因此系统“真的陷入困境”。

答案 1 :(得分:1)

您应该注意的一件事是http.request不会为每个调用创建一个新的套接字。每个请求都发生在一个名为“agent”的对象上,该对象包含一个最多5个套接字的池。如果您使用的是v0.6分支,则可以使用。

来提高此限制
http.globalAgent.maxSockets = Infinity

试一试,看看是否有帮助