Connection Idle Timeout

CLB/NLB/ALB都支持Connection Idle Timeout

当我们请求Load balancer时,它维护了两个连接,一个是客户端与LB之间的,另一个是LB和target之间的。当任意一个连接上面没有发送/接收数据行为时,过了连接空闲时间(Connection idle timeout)后,LB就会主动关掉连接

image-20220903104232350

默认CLB和ALB的Connection Idle Timeout都是60秒,可以调长这个时间(ALB是1-4000秒)

image-20220903131347285

对于NLB,它默认的TCP超时是350s,UDP是120s,而且不能做修改

最佳实践:

  1. 对于后端服务,建议在EC2服务上开启HTTP keep-alive,这样LB可以复用后端的连接(直到keep-alive超时)。

  2. 另外,建议后端应用的超时时间大于LB的超时时间,否则应用提前关闭TCP连接后,LB还会发送请求到应用,这种情况下就会造成502错误。

  3. 如果我们的应用在后端进行耗时的操作,比如上传大文件,可以在上传完成前,不时的给LB发送下数据,防止超时。