在 Openshift 上发送多个 http 请求,只完成了几个
Sending multiple http requests on Openshift, finalized only few
我已经构建了一个 node.js 应用程序,用于通过与某些外部服务器的保持活动、事件流 post 请求建立连接。我发送了其中的 400 个,并使用来自 request 节点包的 data
事件继续对接收到的数据采取行动。我还收听 end
、response
和 error
事件。
当我 运行 来自本地主机的应用程序时,一切都按计划完美运行。但是,当我将它推送到 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。
我已经构建了一个 node.js 应用程序,用于通过与某些外部服务器的保持活动、事件流 post 请求建立连接。我发送了其中的 400 个,并使用来自 request 节点包的 data
事件继续对接收到的数据采取行动。我还收听 end
、response
和 error
事件。
当我 运行 来自本地主机的应用程序时,一切都按计划完美运行。但是,当我将它推送到 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。