我们的 app 里由一个 app 向另一个 app 发送 http 请求,前几天包括今天早上都是没问题的,现在(15:00 以后)突然出现请求全部 timeout 的错误。

发送请求的 AppId: VPVzwjElxgAwTwJBbdEwoMlx-gzGzoHsz
接收请求的 AppId: DmKxXTYX9AaXDHbtBHHgEUjr-gzGzoHsz

代码类似下面这样(javascript):

router.post('/redi', (req, res) => {
  request({
    method: req.method,
    uri: req.originalUrl,
    baseUrl: baseUrl,
    body: req.body,
    json: true
  }).then((response) => {
    res.send(response);
  }).catch((err) => {
    res.status(err.statusCode || 500).send(err.error || err.message);
  });
})

通过查看服务器日志,有这样的错误信息:

Unhandled Rejection at: Promise  Promise {
  _bitField: 18087936,
  _fulfillmentHandler0: 
   Error: Can't set headers after they are sent.
       at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
       at ServerResponse.header (/home/leanengine/app/node_modules/express/lib/response.js:700:10)
       at ServerResponse.send (/home/leanengine/app/node_modules/express/lib/response.js:154:12)
       at ServerResponse.json (/home/leanengine/app/node_modules/express/lib/response.js:240:15)
       at ServerResponse.send (/home/leanengine/app/node_modules/express/lib/response.js:142:21)
       at request.then.catch (/home/leanengine/app/api/index.js:61:39)
       at tryCatcher (/home/leanengine/app/node_modules/bluebird/js/release/util.js:16:23)
       at Promise._settlePromiseFromHandler (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:512:31)
       at Promise._settlePromise (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:569:18)
       at Promise._settlePromise0 (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:614:10)
       at Promise._settlePromises (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:689:18)
       at Async._drainQueue (/home/leanengine/app/node_modules/bluebird/js/release/async.js:133:16)
       at Async._drainQueues (/home/leanengine/app/node_modules/bluebird/js/release/async.js:143:10)
       at Immediate.Async.drainQueues (/home/leanengine/app/node_modules/bluebird/js/release/async.js:17:14)
       at runCallback (timers.js:637:20)
       at tryOnImmediate (timers.js:610:5)
       at processImmediate [as _immediateCallback] (timers.js:582:5),
  _rejectionHandler0: undefined,
  _promise0: undefined,
  _receiver0: undefined,
  _cancellationParent: 
   Promise {
     _bitField: 16777216,
     _fulfillmentHandler0: 
      { RequestError: Error: connect ETIMEDOUT 10.10.57.33:443
          at new RequestError (/home/leanengine/app/node_modules/request-promise-core/lib/errors.js:14:15)
          at Request.plumbing.callback (/home/leanengine/app/node_modules/request-promise-core/lib/plumbing.js:87:29)
          at Request.RP$callback [as _callback] (/home/leanengine/app/node_modules/request-promise-core/lib/plumbing.js:46:31)
          at self.callback (/home/leanengine/app/node_modules/request/request.js:188:22)
          at emitOne (events.js:96:13)
          at Request.emit (events.js:188:7)
          at Request.onRequestError (/home/leanengine/app/node_modules/request/request.js:884:8)
          at emitOne (events.js:96:13)
          at ClientRequest.emit (events.js:188:7)
          at TLSSocket.socketErrorListener (_http_client.js:310:9)
          at emitOne (events.js:96:13)
          at TLSSocket.emit (events.js:188:7)
          at emitErrorNT (net.js:1278:8)
          at _combinedTickCallback (internal/process/next_tick.js:74:11)
          at process._tickDomainCallback (internal/process/next_tick.js:122:9)
        name: 'RequestError',
        message: 'Error: connect ETIMEDOUT 10.10.57.33:443',
        cause: [Object],
        error: [Object],
        options: [Object],
        response: undefined },
     _rejectionHandler0: [Function],
     _promise0: undefined,
     _receiver0: undefined,
     _cancellationParent: undefined,
     _branchesRemainingToCancel: 1,
     _onCancelField: undefined } }  reason:  Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:356:11)
    at ServerResponse.header (/home/leanengine/app/node_modules/express/lib/response.js:700:10)
    at ServerResponse.send (/home/leanengine/app/node_modules/express/lib/response.js:154:12)
    at ServerResponse.json (/home/leanengine/app/node_modules/express/lib/response.js:240:15)
    at ServerResponse.send (/home/leanengine/app/node_modules/express/lib/response.js:142:21)
    at request.then.catch (/home/leanengine/app/api/index.js:61:39)
    at tryCatcher (/home/leanengine/app/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/leanengine/app/node_modules/bluebird/js/release/promise.js:689:18)
    at Async._drainQueue (/home/leanengine/app/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/home/leanengine/app/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/home/leanengine/app/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:637:20)
    at tryOnImmediate (timers.js:610:5)
    at processImmediate [as _immediateCallback] (timers.js:582:5)

请查一下到底发生了什么。

很抱歉是我们的问题,已经修复,请问现在恢复了吗?

您好,我们最近上线了云引擎新的入口服务,为了更灵活的调整云引擎的入口流量和服务能力。这个操作涉及到一些防火墙的变更,导致云引擎内部相互请求被影响。

我们已经修复该问题,麻烦确认下。

非常抱歉给您带来影响。

经确认已经恢复了。

话说这样的变更不是应该在深夜进行么……白天会影响各种业务啊