线上事故–网卡带宽问题
先说下现象:早上高峰期时,rpc调用超时,只显示了超时日志,但是没有具体的逻辑日志,此时怀疑有资源限制,导致tcp连接已经建立,但是报文没有发过来。
资源有哪些限制
- 文件描述符占用;
- cpu资源;
- 内存资源;
- 磁盘空间;
- 网络带宽;
但是1到4都不会导致tcp连接已经建立,但是报文没发过来,所以此时可以断定是网络带宽的问题;
检查网络带宽可以用到哪些工具
- ethtool 网卡名,可以用这个命令查看某个网卡的带宽大小,如下:
图中显示为1000Mb;
2.nload 网卡名,该命令可以查看某个网卡使用的带宽,如下:
这个最大值明显超过1000Mb,所以会有问题;
3.nethogs 网卡名,该命令可以查看具体的带宽占用,如下:
图中第一行就是测试中的流量记录,表示192.168.40.250这台客户端去访问我的80 端口所占用的带宽。在PID 那一列,可以使用 lsof -p pid 查看进程测试。
总结:线上环境要注意网卡带宽等资源,代码中注意使用各种连接池(包含协程池、http连接池等),测试的时候要注意各种资源使用情况;