1、 故障描述
AIX通过FTP传输数据时,出现了严重的性能问题,环境如下:
FTP客户端: AIX6106
FTP服务端:RHEL 7.5+vsftp
2、 故障分析过程
1.通过替换测试的方式,使用同网段的Linux和Windows作为客户端传输速度为200K/s左右,没有性能问题,仅使用aix客户端时故障才会出现,排除了ftp server的问题,确认问题出在aix端。
2.使用测试文件进行传输测试,1M大小的文件传输耗时接近1分钟,平均速度17.06k/s。同时使用tcpdump抓包进行分析。
ftp> bin 200 switching to Binary mode. ftp> put test20231228 200 PORT command successful. consider using PASV 150 OK to send data. 226 Transfer complete 1016000 bytes sent in 58.15 seconds (17.06 kbytes/s) 1ocal: test20231228 remote: test20231228 ftp> bye 221 Goodbye. |
3.使用wireshark打开抓包文件进行分析,先观察专家信息概要,发现有大量的重传和超时重传。

4.跟踪tcp流量的往返时间,发现有大量1.5秒的毛刺,都是重传导致的。

5.根据包大小和时间,过滤出重传的ftp数据包,可以发现一共有38个,如果按RTT 1.4秒计算,这38个包耗时53秒。如果扣除这53秒的话,1M传输文件耗时5秒,可以达到和Linux客户端同样的200K/s的速度。

综上,问题的关键在于aix端的重传机制有问题。
3. 故障处理
经查询,aix传统的重传超时间隔为1.5秒,可以通过调整系统参数来缩短这个间隔,最终调整如下:
no -o timer_wheel_tick=1 //timer wheel的间隔,单位是ticks,1个tick也就是10ms
no -o tcp_low_rto=20 //tcp超时重传的时间 但是是ms,必须是timer_wheel_tick时间的倍数,这里设置为20ms
调整参数后,aix ftp客户端传输速度回归正常。

