我的应用程序托管在 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
另外,我检查了应用程序日志,我发出的请求尚未到达应用程序。
这可能是什么原因造成的?
它可能链接到此:AWS ELB 间歇性 502 网关超时错误特别是如果请求时间为 0 并且后端时间为 -1 。这意味着远程服务器在 ALB 检测到套接字之前以及传入连接到达时丢弃了套接字。可能值得检查后端的超时设置,以确保它高于 ALB 保持活动状态。
target_status_code
,从而收到目标的响应。否则记录为-
。