我们有一项 ECS + EC2 设置的服务。在ECS上,我们配置了服务自动伸缩。我们注意到,当自动扩展策略尝试扩展更多任务时,我们有时会看到来自 ALB 的短暂 504 网关超时。
我检查过的事情:
下面是一个 ALB 访问日志示例,似乎表明 ALB 和目标连接之间存在一些问题? (因为 request_processing_time 为 -1)。
type: https
time: 2024-07-25T22:12:31.373696Z
elb: app/xxxx/b3e537e604573ca5
client:port: 52.26.185.88:13328
target:port: 10.0.228.223:8443
request_processing_time: -1
target_processing_time: -1
response_processing_time: -1
elb_status_code: 504
target_status_code: -
received_bytes: 2324
sent_bytes: 292
request: "POST https://xxxxx:443/ HTTP/1.1"
user_agent: "xxxxx"
ssl_cipher: ECDHE-RSA-AES128-GCM-SHA256
ssl_protocol: TLSv1.2
target_group_arn: xxxxxxxx
trace_id: "Root=1-xxxxx-xxxxxxx"
domain_name: "xxxxxx"
chosen_cert_arn: "session-reused"
matched_rule_priority: 0
request_creation_time: 2024-07-25T22:12:21.374000Z
actions_executed: "waf,forward"
redirect_url: "-"
error_reason: "-"
target:port_list: "10.0.228.223:8443"
target_status_code_list: "-"
classification: "-"
classification_reason: "-"
conn_trace_id: xxxxxx
我的猜测是,新注册的主机可能并不真正健康,但 ALB 仍以某种方式向其发送流量,但我不确定如何检查。想知道是否有人知道可能是什么原因以及如何解决该问题?
非常感谢!
听起来您可能需要慢慢地为 ECS 服务的新实例提供流量,以便让您的应用程序有时间完全启动或执行其他操作。您可以使用负载均衡器目标组上的
slow_start.duration_seconds
设置进行管理。 记录在这里
负载均衡器向新注册的目标发送线性增加的流量份额到目标组的时间段(以秒为单位)。范围为 30–900 秒(15 分钟)。默认值为 0 秒(禁用)。