微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Apigee 服务器获取 502 错误网关

如何解决从 Apigee 服务器获取 502 错误网关

我的应用程序运行 Node.js v12.22.1 和 Express、MongoDB 和 Vue.js。 Apigee 服务器充当后端和客户端之间的网关。

如果一个请求需要超过 2 分钟才能完成(如果后端调用一个后端服务会发生这种情况,这会进行一些长时间的计算),它会在前端产生 502 Bad Gateway。这个问题发生在请求的 2 分钟内,所以我认为超时是问题所在。在我的节点版本中,the default timeout is 2 minutes

502 错误未记录在后端的任何位置。后端实际上完成了请求并在大约 4 分钟内记录了 200 Ok(但此时客户端已经收到错误)。

错误正文:

{
   "fault":{
      "faultstring":"Unexpected EOF at target","detail":{
         "errorcode":"messaging.adaptors.http.flow.UnexpectedEOFAtTarget"
      }
   }
}

the Apigee docs 中描述了此错误,这让我相信中间 Apigee 服务器是此错误的根源。

我已使用 timeout middleware 将请求超时增加到 10 分钟。如果入站请求超过超时,服务器现在响应 503。这解决了问题,但还有一些我不太明白的地方。

问题:如果我在后端配置超时,那么错误是由 Apigee 引发的,而不是由后端本身引发的?让我们忽略日志问题的可能性,假设日志没问题。

附言我还在后端将 keep-alive 提升为 suggested by the Apigee docs。它对问题没有影响。

P.P.S 我知道需要 2 分钟以上的请求并不理想,但这就是我现在坚持的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。