Plainnotes

应用层心跳该多久一次

2025-07-30 · 3 分钟网络

长连接需要心跳来保活和探活,频率定多少常靠拍脑袋。

约束有两个方向。太慢:中间设备的会话表先过期,连接被静默回收,你以为还连着。太快:白白消耗流量和电量,移动端尤其明显。

经验值:心跳间隔取 NAT 超时的三分之一到二分之一,常见 NAT 是 300 秒,那就 60–120 秒。同时要求连续丢失 2–3 次才判定断线,避免一次抖动就重连。

还要区分两个概念:心跳是“我还活着”,业务探活是“我还能干活”。只发心跳不查依赖,数据库挂了心跳照样通。

移动端要配合系统调度:iOS 后台不允许常驻定时器,靠 push 唤醒更实际;Android 有 Doze,心跳会被延迟,别把间隔卡得太死。