节点 RED - 使用多个 HTTP 请求连接 ECONNREFUSED
NodeRED - Connect ECONNREFUSED with multiples HTTP requests
当我们使用 NodeRED[=34] 在我们的 NodeJS API 服务器上使用 HTTP 请求 进行大量请求时,我们遇到了一个问题=].
顺便说一下,我们还使用他在 请求库 上实现的 WWW Request 节点对其进行了测试。结果是一样的:(
这是错误堆栈跟踪:
error:
{ message: 'Error: connect ECONNREFUSED 163.113.172.80:1337',
source:
{ id: '5d2aa78c.a2d558',
type: 'http-request',
name: undefined,
count: 1 },
stack: 'Error: connect ECONNREFUSED 163.113.172.80:1337\n at
Object.exports._errnoException (util.js:856:11)\n at
exports._exceptionWithHostPort (util.js:879:20)\n at
TCPConnectWrap.afterConnect [as oncomplete] (net.js:1062:14)' } }
当然,我们使用 Apache Benchmark (ab CLI) 测试了我们的 API 服务器,结果成功(没有失败),API 率为 500 req/s。
技术资料:
- Node-RED 版本:v0.14.5
- Node.js 版本:v5.5.0
- Windows_NT 6.1.7601 x64 LE
- 处理器:Intel Xeon CPU E5-630 v3 3.70Ghz 8 核
- 内存:64Gb
有什么想法吗?
我们通过像这样设置最大套接字值找到了解决方法:
http.globalAgent.maxSockets = 100;
https.globalAgent.maxSockets = 100;
默认情况下,HTTP(S) 全局代理最大套接字值似乎是无限的...
当我们使用 NodeRED[=34] 在我们的 NodeJS API 服务器上使用 HTTP 请求 进行大量请求时,我们遇到了一个问题=].
顺便说一下,我们还使用他在 请求库 上实现的 WWW Request 节点对其进行了测试。结果是一样的:(
这是错误堆栈跟踪:
error:
{ message: 'Error: connect ECONNREFUSED 163.113.172.80:1337',
source:
{ id: '5d2aa78c.a2d558',
type: 'http-request',
name: undefined,
count: 1 },
stack: 'Error: connect ECONNREFUSED 163.113.172.80:1337\n at
Object.exports._errnoException (util.js:856:11)\n at
exports._exceptionWithHostPort (util.js:879:20)\n at
TCPConnectWrap.afterConnect [as oncomplete] (net.js:1062:14)' } }
当然,我们使用 Apache Benchmark (ab CLI) 测试了我们的 API 服务器,结果成功(没有失败),API 率为 500 req/s。
技术资料:
- Node-RED 版本:v0.14.5
- Node.js 版本:v5.5.0
- Windows_NT 6.1.7601 x64 LE
- 处理器:Intel Xeon CPU E5-630 v3 3.70Ghz 8 核
- 内存:64Gb
有什么想法吗?
我们通过像这样设置最大套接字值找到了解决方法:
http.globalAgent.maxSockets = 100;
https.globalAgent.maxSockets = 100;
默认情况下,HTTP(S) 全局代理最大套接字值似乎是无限的...