Nodejs Request模块 - 如何设置全局keepalive

时间:2017-03-15 06:32:44

标签: node.js

我在我的应用程序中使用请求npm模块,以创建一个http客户端,就像这样。

var request = require('request');

每次我向某个服务器发出请求,我都会传递如下选项:

var options = {
  url: "whateverurl...",
  body: { some json data for POST ... }
}
request(options, cb(e, r, body) {
   // handle response here...
})

这工作正常,直到我开始高负载测试,并且我开始收到错误,表明没有可用的地址(EADDRNOTAVAIL)。看起来我正在耗尽短暂的端口,因为没有启用池或保持活动。

之后,我将其更改为:

var options = {
  url: "whateverurl...",
  body: { some json data for POST ... },
  forever: true
}
request(options, cb(e, r, body) {
  // handle response here...
})
  • (注意选项(forever:true)

我尝试查找请求模块的文档,了解如何设置keep-alive。根据文档和这个stackoverflow thread,我应该将{forever:true}添加到我的选项中。

它似乎对我不起作用,因为当我检查tcpdump时,服务器仍在关闭连接。所以,我的问题是:

  • 我在这里做错了吗?
  • 我是否应该设置一个全局选项来请求模块,而我“需要”它,而不是告诉它使用{forever:true},每次我发出一个http请求?这让我很困惑。

0 个答案:

没有答案