【问题标题】:AWS, Load Balancer 504 error after a few requests几次请求后,AWS,负载均衡器 504 错误
【发布时间】:2018-03-15 01:48:27
【问题描述】:

我在重复我在https://forums.aws.amazon.com/thread.jspa?threadID=275855&tstart=0 发布的一个问题 接触更多的人。

嗨,

我正在尝试在 AWS 中部署 REST 服务。目前的架构是: 域名 (Route 53) -> 负载均衡器 -> 单个 EC2 实例(绑定到弹性 IP)。而且我使用证书管理器颁发的 TLS/SSL 证书。

实例是 Ubuntu 16.04 机器,服务是用(裸)Vert.X(==无代理服务器)实现的。

但是,504 错误(网关超时)发生在一系列不同的请求(每个请求

我运行了一个返回“hello world”的虚拟服务器,它与负载平衡器一起工作正常。问题应该是由于负载平衡器和服务器代码之间的不一致造成的,但我不知道从哪里开始。

我检查了几个抱怨 504 错误的线程,并遵循了一些说明,但它们不起作用。特别是我在 Vert.x 中设置了 keep-alive 选项,并将空闲时间设置为比平衡器更长。由于延迟不超过直接通信的空闲时间,我相信无论如何这不是问题。我还检查了安全组并确认正确的端口已打开。 (前几个请求是有效的,所以它一定不是问题。)

你们中有人知道我应该从哪里开始看吗?更好的是,知道问题的根源吗?

提前致谢。

编辑:我刚刚在一些代码中发现了问题。我已经在下面回答了自己。感谢阅读!

【问题讨论】:

  • 您的健康检查通过了吗?运行aws elb describe-instance-health --load-balancer-name my-load-balancer 你在输出的描述中有什么吗?这是经典的ELB吗?可以试试直接用 EIP 访问应用吗?
  • 是的,健康检查工作正常,这就是前几个请求得到响应的原因。正如我在下面回答的那样,我发现问题出在我的代码中。不过感谢您的建议!

标签: amazon-web-services vert.x elastic-load-balancer


【解决方案1】:

在我的代码中发现了问题。一些 API(由我的同事实现......)没有刷新服务器中 HTTP 响应的缓冲区。 在 Vert.X Java 中,它是 resp.end()

它以某种方式使用直接访问可能在某个时候刷新了缓冲区,但该刷新似乎没有被负载平衡器捕获。

希望没有人会遇到这种情况,但以防万一......

【讨论】:

    猜你喜欢
    • 2022-12-14
    • 2020-05-26
    • 2018-06-30
    • 2020-11-26
    • 2015-01-22
    • 2018-08-13
    • 2014-12-18
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多