【发布时间】:2016-03-02 23:51:56
【问题描述】:
我知道 server.timeout 和 socket 的 keepalive 超时默认超时为 120 秒。但就我而言,我已经将 http 代理设置更改为 170 秒,并将 socket.timeout 和服务器超时更改为 170 秒。仍然收到错误 ECONNRESET "socket hangup"。
下面是代理设置和套接字时间设置。
"proxy_agent": {
"maxSockets" : 256,
"maxFreeSockets" : 256,
"keepAlive" : true,
"keepAliveMsecs" : 170000,
"keepAliveTimeout" : 15000,
"timeout" : 170000
},
和Socket设置
var setupSocket = function(socket) {
socket.setNoDelay(true);
socket.setTimeout(170000);
socket.server.timeout = 170000;
socket.setKeepAlive(true,0);
return socket;
};
下面是调试器屏幕截图,显示了我的所有自定义值都已正确设置。
【问题讨论】:
-
问:您的 node.js 应用程序 MAKING 是对 REMOTE SERVER 的 http 请求吗?您需要对对话的双方进行故障排除 - 本地和远程。在这里查看一些好的故障排除示例:Node js ECONNRESET/node-js-econnreset。附加建议:下载并熟悉Wireshark 和/或Fiddler2。两者都是非常宝贵的故障排除工具!
-
感谢您的回复@Paulsm4。是的,我的应用正在调用远程服务器。但是当通过 curl 调用同一个远程服务器时,它不会在 120 秒时超时,所以我知道这是节点设置。但考虑到所有地方都已更改,不确定还有哪些地方可以更改超时设置。
标签: node.js sockets tcp keep-alive