1

我在一个看起来像这样的服务器上有一个脚本。

request = require('request');
require('longjohn');
request.post(
    { 
        url : 'https://example.com/api/thing/',
        form : {
            api_key : "blahblah",
            thing_id : 0
        },
        json : true
    },
    function(error, response, body){
        console.log(error, response);
    }
);

当我在本地运行它时,它运行良好,但是当我在服务器上运行它时,我得到了这个。

{ [Error: read ECONNRESET]
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
__cached_trace__: 
[ { receiver: [Object],
   fun: [Function: errnoException],
   pos: 22969 },
 { receiver: [Object], fun: [Function: onread], pos: 14584 },
 {},
 { receiver: [Object], fun: [Function], pos: 19529 },
 { receiver: [Object], fun: [Function], pos: 49346 },
 { receiver: [Object],
   fun: [Function: _tickCallback],
   pos: 14030 },
 { receiver: [Object], fun: [Function], pos: 14031 },
 { receiver: [Object], fun: [Object], pos: 4502 },
 { receiver: [Object], fun: [Function], pos: 28039 },
 {},
 { receiver: [Object], fun: [Function], pos: 48679 },
 { receiver: [Object], fun: [Function], pos: 36057 },
 { receiver: [Object], fun: [Object], pos: 40546 },
 { receiver: [Object], fun: [Function], pos: 3570 },
 { receiver: [Object], fun: [Function], pos: 17260 },
 { receiver: [Object], fun: [Function], pos: 36440 },
 { receiver: [Object], fun: [Function], pos: 11960 },
 {},
 { receiver: [Object], fun: [Function], pos: 11634 },
 { receiver: [Object], fun: [Object], pos: 2292 },
 { receiver: [Object], fun: [Object], pos: 1738 },
 { receiver: [Object], fun: [Function], pos: 3238 },
 { receiver: {}, fun: [Function], pos: 121 },
 { receiver: [Object], fun: [Function], pos: 12854 },
 { receiver: [Object], fun: [Function], pos: 13365 },
 { receiver: [Object], fun: [Function], pos: 10114 } ],
 __previous__: 
 { [Error]
 id: 73,
 location: 'Readable.on (_stream_readable.js:679)',
 __location__: 'EventEmitter.on',
 __previous__: 
  { [Error]
    id: 60,
    location: 'ClientRequest.onSocket (http.js:1700)',
    __location__: 'process.nextTick',
    __previous__: [Object],
    __trace_count__: 2,
    __cached_trace__: [Object] },
 __trace_count__: 3,
 __cached_trace__: 
  [ [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    {},
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    {},
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object],
    [Object] ] } }

我不熟悉 tcp 套接字的细节。如果有人有任何想法或您需要更多信息,请告诉我。

4

1 回答 1

0

我们的机架空间管理支持团队最终解决了这个问题——这是一个硬件配置问题。

看起来您的问题出在防火墙和负载均衡器之间。

看来此问题是由防火墙的 DNS 篡改引起的。

如果我在 xxx-node-prod-1 上的 /etc/hosts 文件中设置 production.xxx.com 的 ip 地址为 xxx.xxx.xxx.xxx,则一切正常。

当 curl 命令命中负载均衡器的私有 nat ip 时,就会出现问题。

我们为此设置使用了硬件 FW 和 LB,而他们这边的某些东西很麻烦。

于 2013-09-11T18:30:29.593 回答