在Openshift上发送多个http请求,只完成了几个



我已经构建了一个node.js应用程序,用于建立与keep-alive,事件流post请求与一些外部服务器的连接。我发送了其中的400个,并使用来自请求节点包的data事件继续对接收到的数据进行操作。我也听end, responseerror事件。

当我从localhost运行应用程序时,一切都按照计划完美地工作。然而,当我把它推送到Openshift时,只有前5个请求按预期工作,其余的只是…就消失了。我没有得到任何错误,没有得到任何响应,也没有end。我试着用一些延迟发送请求,我试着寻找关于最大请求的信息,我彻底调试了它-没有任何工作。有没有人有一个想法,基于这个问题的描述,如何使所有400个请求工作(或有一个答案,为什么他们不会)?

我自己找到了解决这个问题的方法。由于在Node.js的0.10版本中,http服务器的默认agent.maxSockets属性设置为该数字,因此,Request.js库无法建立超过5的连接。虽然我没有直接需要http包,但Request.js库使用了它。为了解决这个问题,我所要做的就是在主应用程序模块中放入以下代码:

var http = require('http');
http.globalAgent.maxSockets = 500; //Or any other number you want

顺便说一句。默认值已经在0.12版本的Node.js中更改为infinity

最新更新