我在我的应用程序中使用请求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...
})
我尝试查找请求模块的文档,了解如何设置keep-alive。根据文档和这个stackoverflow thread,我应该将{forever:true}添加到我的选项中。
它似乎对我不起作用,因为当我检查tcpdump时,服务器仍在关闭连接。所以,我的问题是: