两条超时分别管什么
负载均衡对连接有两条关键超时:建连超时是等待与后端建立连接的上限,后端进程卡住或端口没监听时,它决定多久返回错误;空闲超时是连接建立后没有数据流动能被保留多久,超过就被回收。前者影响故障暴露的速度,后者直接决定长连接业务稳不稳定——空闲超时一旦小于心跳间隔,连接会周期性被中间层清掉,而应用侧往往只看到「莫名断开」。
基本信息
| 建连超时 | 等待与后端建立连接的上限,后端卡住时超时返回错误 |
|---|---|
| 空闲超时 | 连接无数据流转后回收的时间,需大于业务心跳间隔 |
| 设置原则 | 空闲超时大于应用心跳周期,并留出重试余量 |
| 注意 | 四层与七层的默认值不同,以产品文档当前默认值为准 |
典型使用场景
- WebSocket 与消息推送:按心跳周期调整空闲超时避免掉线
- 数据库或消息队列代理:长连接空闲期很长,需放宽空闲超时
- 后端启动慢:适当放宽建连超时,减少启动期的失败请求
- 排查周期性断连:用不发送数据的连接测量实际断开时间
观察空闲连接何时被断开
观察空闲连接何时被断开
timeout 300 nc -v <LB地址> 8080
# 保持不发送数据,记录连接被断开的时间点
# 结果与配置的空闲超时对比,可确认哪一层先回收连接现象与原因对照
| 现象 | 可能原因 |
|---|---|
| 连接规律性断开 | 空闲超时小于心跳间隔 |
| 后端卡住时长时间无响应 | 建连超时设置过大 |
| 启动期请求批量失败 | 建连超时小于后端启动时间 |
| 长连接在静默期断开 | 缺少应用层心跳 |
空闲超时小于心跳间隔时,连接会被负载均衡先一步清理,表现为周期性断连。
怎么定这两个值
定参数前先量出三个数:业务的最长静默间隔、后端正常情况下建立连接所需的时间、后端启动或重启的耗时上限。空闲超时取最长静默间隔的一到两倍,留出网络抖动与时钟误差的余地;建连超时按后端启动耗时上限设置,同时不要太大,否则后端真卡住时请求会长时间挂起并堆积,把小故障拖成大故障。两个值确定后写进配置文档,后续调整要同步通知应用侧。