这是一位同事写的笔记,里面用到一些抓包命令,感觉不错,分享给大家
业务反应偶尔出现访问比较慢,出现landing状态,检查业务发现有一定概率浏览器返回504 gateway timeout (504错误代表网关超时 (Gateway timeout),是指服务器作为网关或代理,但是没有及时从上游服务器收到请求)。
整体的服务架构是lvs->nginx->golang,其中nginx和golang的服务不在同一台机器。登录nginx的服务器,在日志中发现不少504的请求,golang服务超过60秒没有应答:
对日志进行统计发现504比例比较常高,并且分散到各种接口上都有,对mysql,redis等服务检查发现各项指标正常,因此初步排除了是某项业务导致的接口超时。怀疑是nginx服务器和golang服务器之间网络原因造成的。在其他各个机房进行访问测试,发现都有一定概率发生超时。
通过ss查看到超时时的链接一直处于syn-send的状态,没有收到ack应答报文: