You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS ALB默认最大连接时长是多少?K8s Websocket应用发布迁移疑问

AWS ALB与Websocket长连接核心问题解答

ALB的最大连接时长(Idle Timeout)

  • 默认情况下,ALB的空闲超时时间是60秒,可手动调整至最大值4000秒(约66分钟)。这里的“空闲”指连接两端无数据传输的状态,若Websocket连接持续有心跳或数据交互,该超时不会触发。
  • 若需支持超66分钟的持续活跃连接,只要保持连接有数据流动(比如客户端定期发送心跳帧),ALB就不会主动断开连接。

旧Pod连接超过1小时的行为

当发布流程中旧Pod被标记为终止(收到SIGTERM信号),关键行为如下:

  1. ALB停止转发新流量:旧Pod从K8s Service端点列表移除后,ALB不再向其转发新连接请求,但已建立的Websocket连接不会立即断开。
  2. Pod终止宽限期:K8s默认终止宽限期为30秒,你可通过Pod的spec.terminationGracePeriodSeconds字段调整(无上限,受集群资源限制)。若旧Pod上的Websocket连接仍活跃,Pod会等待宽限期结束才会被强制杀死。
  3. 宽限期后的强制断开:若宽限期设置小于1小时,宽限期结束时K8s会发送SIGKILL信号强制终止Pod,此时所有未断开的Websocket连接会直接中断;若宽限期≥1小时,只要连接活跃且宽限期未到,旧Pod会继续维持连接,直到宽限期结束或连接主动断开。
  4. ALB侧连接状态:只要旧Pod仍在运行且连接活跃,ALB不会主动断开已建立的Websocket连接(即使时长超1小时)。仅当Pod被强制终止后,ALB检测到后端连接失败,才会断开前端客户端连接。

优化建议

  • 调整Pod终止宽限期:根据Websocket连接最长预期时长,设置合适的terminationGracePeriodSeconds,比如3600秒(1小时)或更长,给旧连接足够时间自然断开。
  • 配置Websocket心跳:让客户端定期发送心跳帧,避免ALB因连接空闲触发超时断开。
  • 平滑流量迁移:使用K8s滚动更新策略(如maxUnavailable: 0配合maxSurge),确保新Pod就绪后再逐步终止旧Pod,降低长连接中断概率。

内容的提问来源于stack exchange,提问作者Bidyut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:15:00