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

Sending multiple http requests on Openshift, finalized only few

我已经构建了一个 node.js 应用程序,用于通过与某些外部服务器的保持活动、事件流 post 请求建立连接。我发送了其中的 400 个,并使用来自 request 节点包的 data 事件继续对接收到的数据采取行动。我还收听 endresponseerror 事件。

当我 运行 来自本地主机的应用程序时,一切都按计划完美运行。但是,当我将它推送到 Openshift 时,只有前 5 个请求按预期工作,其余的就……消失了。我没有收到任何错误,没有收到任何回复,也没有 end。我尝试在它们之间有一些延迟发送请求,我尝试寻找有关最大请求的信息,我彻底调试它 - 没有任何效果。根据对问题的描述,有没有人知道如何使所有 400 请求都起作用(或者知道为什么它们不起作用)?

我自己找到了解决该问题的方法。看起来,Request.js 库无法建立比 5 更多的连接,因为 http 服务器的默认 agent.maxSockets 属性 在 0.10 版本 Node.js。虽然我没有直接要求 http 包,但 Request.js 库使用了它。我所要做的就是将以下代码放在主应用程序模块中:

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

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