我正在编写一个大量使用http.request方法的应用程序。
特别是,我发现同时发送16 + ~30kb的请求真的使512mb RAM机器上的Nodejs实例陷入困境。
我想知道这是否是预期的,或者Nodejs是否只是出站请求的错误平台。
答案 0 :(得分:1)
是的,这种行为似乎非常合理。
如果它正在完成您描述的工作而没有任何明显的系统负载(在这种情况下需要很长时间),我会更加担心。请记住,节点只是一个公平的I / O运行时,因此您可以确信它正在按照底层系统的速度调度您的I / O请求(大约),因此它正在使用系统(几乎)最大潜力,因此系统“真的陷入困境”。
答案 1 :(得分:1)
您应该注意的一件事是http.request不会为每个调用创建一个新的套接字。每个请求都发生在一个名为“agent”的对象上,该对象包含一个最多5个套接字的池。如果您使用的是v0.6分支,则可以使用。
来提高此限制http.globalAgent.maxSockets = Infinity
试一试,看看是否有帮助