ALB 将 target_status_code 指定为 -(连字符)

问题描述 投票:0回答:2

我的应用程序托管在 AWS 中。我有一个使用gunicorn Web服务器在ECS上运行的Python应用程序,并且ECS位于负载均衡器(ALB)后面。我面临的问题是,我经常从 ALB 收到 502 网关错误。当我检查日志时,它在

target_status_code
列的位置有 -(连字符)。

根据AWS文档,以下是该字段的描述,

目标状态代码: 来自目标的响应的状态代码。这个值是 仅当与目标建立连接且 目标发送了响应。否则,它被设置为-。

但是当我检查目标组时,看起来没有任何连接问题。

我使用以下命令来启动gunicorn工作人员,

gunicorn \
-c gunicorn_config.py \
-b 0.0.0.0:5000 aiohttp_wsgi_handler:aioapp \
-k aiohttp.worker.GunicornWebWorker \
-w 3 \
--access-logfile - \
--access-logformat '%t [INFO] %P request_id=%{X-REQUEST-ID}o cf_id=%{X-Amz-Cf-Id}i %r %s %b %Tfs' \
--log-level debug \
--graceful-timeout 180

另外,我检查了应用程序日志,我发出的请求尚未到达应用程序。

这可能是什么原因造成的?

amazon-web-services gunicorn aws-application-load-balancer http-status-code-502
2个回答
0
投票

它可能链接到此:AWS ELB 间歇性 502 网关超时错误特别是如果请求时间为 0 并且后端时间为 -1 。这意味着远程服务器在 ALB 检测到套接字之前以及传入连接到达时丢弃了套接字。可能值得检查后端的超时设置,以确保它高于 ALB 保持活动状态。


0
投票
仅当成功连接到目标时才会记录

target_status_code
,从而收到目标的响应。否则记录为
-

© www.soinside.com 2019 - 2024. All rights reserved.