本文通过一个TCP重传优化的实际问题,详细讲解问题的分析、定位、优化过程。
通过本文你将学到:
- 如何通过linux命令和
/proc
文件系统分析TCP性能数据 - 如何通过linux命令和
netlink api
分析某个具体的TCP连接的性能数据 - 如何通过
bcc
工具分析TCP性能数据 - 如何通过调整系统参数优化TCP重传效率
问题现象
在一个使用TCP连接的跨主机网络通信场景中,通信延迟偶尔发生抖动,由正常的几十ms飙升至几百ms,严重影响业务表现
下图是实际环境中的监控数据收集到的TCP某条连接延迟的整体情况:
分析过程
性能数据收集
性能分析优化是一项严谨的工作,需要定量的进行分析,因此第一步就是收集性能数据作为我们优化的依据并方便后续对比优化效果。
- TCP整体数据收集
我们可以用sar
命令收集TCP整体性能,可以看到传输速率和重传速率。
$ sar -n TCP,ETCP 1
Linux 5.10.120-tegra (