Poison

Active Connections

业务方反馈一到晚上就有接口时好时坏,用浏览器访问的话表现就是一直处于 pending 状态,直到超时,多次尝试的话有时又会恢复正常。开始怀疑是接口内部实现问题,于是我在多个请求处于 pending 状态时拉取了栈帧进行检查,发现没有符合该接口实现的栈帧。于是怀疑连接建立问题,使用 telnet 443 对负载均衡服务器发起连接,表现也是卡住,于是去查了该负载均衡实例的监控,果然是活跃连接数已经达到该实例的上限导致,因为当时选用的最低配,根本不能支撑现有的业务量,于是直接升配解决。可以猜测该实例到达连接数上限时采取的策略是丢弃 SYN 包,导致客户端重传直到超时,而没有采取直接返回 RST 的方式。当然这只是我根据现象进行的推测,具体的原因可以用 Wireshark 抓包确认,只不过这次还没用到就解决了该问题。

之前遇到类似的问题,最后排查出来是因为风控系统将特定 IP 加入了负载均衡层的黑名单,表现也是一直处于 pending 状态,猜测负载均衡服务器的实现也是丢弃 SYN 包。

Reference

怎么理解SLB的并发连接数和PTS里的并发? - 性能测试 PTS - 阿里云