【问题标题】:504 Gateway Time-out on specific POST request504 特定 POST 请求的网关超时
【发布时间】:2016-08-16 18:09:18
【问题描述】:

由于亚马逊的论坛出现错误,我在这里发布问题。

我们正在使用 Elastic Beanstalk 运行单个 nodejs (api) 实例。 使用 4 个月后,突然创建用户的 POST 请求失败,出现 504 Gateway Time-out。在此期间,没有对代码或弹性 beanstalk 配置进行任何修改。 其余请求正常工作。在本地测试时没有错误。 在 nginx 错误日志中发生以下情况: 从上游读取响应标头时,上游超时(110:连接超时)。 尝试将 Apache 作为代理,这给出了类似的错误。

环境

  • 运行 Node.js 的 64 位 Amazon Linux 2016.03 v2.1.0
  • Nodejs 4.3.0
  • Nginx 1.8.1

在尝试了几乎所有方法之后,我们别无选择。 有什么建议吗?

提前致谢, MK

【问题讨论】:

  • 尝试从本地服务器运行 post 请求是否有效?尝试 sshing 进入服务器(您可以使用 eb cli 执行此操作)并将您的请求发布到 localhost:.
  • Sshed 到我的服务器并使用 localhost:8081 和远程 eb url 尝试发布请求。使用 wget 我在尝试 localhost 时收到以下响应:已发送 HTTP 请求,等待响应...未收到数据。尝试远程 eb url 时出现 504 网关超时。
  • @mkshake 你解决了这个问题吗?我也有类似的问题
  • 是的,我终于解决了这个问题。在 mongoose 用户模型中,验证功能在部署时无法正常工作。不知道为什么。

标签: node.js amazon-web-services nginx amazon-elastic-beanstalk


【解决方案1】:

如果您使用的是 ELB,请尝试将“空闲超时”设置为更高的时间值。您可以使用AWS CLI

aws elasticbeanstalk update-environment --environment-name your-env-name --option-settings Namespace=aws:elb:policies,OptionName=ConnectionSettingIdleTimeout,Value=300

我不确定您是否可以通过 UI 执行此操作,但我不这么认为。

【讨论】:

  • 目前我们没有运行负载均衡器。 ConnectionSettingIdleTimeout 选项适用于负载均衡器。我玩了很多nginx代理的超时,但我不认为增加这个值会解决问题,因为POST请求只需要112ms到1500ms才能完成。
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 2022-09-28
  • 1970-01-01
  • 2011-08-30
  • 2017-04-30
  • 2019-08-30
  • 1970-01-01
相关资源
最近更新 更多