起始:客户报障,从 Debian source 下载安装 Golang 时候速度极慢,且与 1.1.1.1 通信有 10% 丢包,客户报障丢包发生在 DECIX 接口上,希望我们进行排查。
Get:http://deb.debian.org/debian buster/main amd64 golang-1.11-go amd64 1.11.6-1+deb10u3 [41.9 MB] 255 kB/s 1min 24s
结论:DECIX 丢包引起回程流量大量丢包,进而引起大量数据重传,TCP 窗口无法增大,故引起性能异常。
排查过程:
首先检测 DECIX 丢包情况,可复现客户所报故障,观察后台监控,确实有 10-20% 固定丢包。
查看客户访问的目标地址为 fastly CDN,于是查看路由表,并未发现有关于 fastly CDN 的路由从 IXP 被接收到,于是开始做 Performance Test 以排除链路问题。
[ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 1.07 GBytes 919 Mbits/sec sender [ 4] 0.00-10.00 sec 1.05 GBytes 906 Mbits/sec receiver
Transit circuit 并未见到有问题,性能过关,那会是什么情况呢?
这时候看到了一张大量 TCP RETRY 的 iperf3 测试图,突然想到 IXP Member 有可能只接受路由而不发送路由(节省出方向的流量费用),会不会回程流量也走了 DECIX?直接在 DECIX Member List 上查询,果然有 Fastly CDN 的存在。最后决定对 DECIX 禁播路由,避免流量从 DECIX 进入影响用户体验。
Total download size: 98 M Installed size: 320 M Downloading packages: (1/4): golang-1.13.6-1.el7.x86_64.rpm | 3.2 MB 00:00:00 (2/4): golang-bin-1.13.6-1.el7.x86_64.rpm | 86 MB 00:00:01 (3/4): golang-src-1.13.6-1.el7.noarch.rpm | 7.1 MB 00:00:00 (4/4): mercurial-2.6.2-10.el7.x86_64.rpm | 2.6 MB 00:00:00 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 73 MB/s | 98 MB 00:00:01
路由禁播后,从 Debian source 下载安装 golang 的速度问题解决了,向客户反馈原因,并向 DECIX 发送邮件报修。