ping一下,延迟才三十几毫秒,网页却还是一卡一卡的。带宽看着也够用,这种时候,丢包是最容易被忽略的原因之一。下面先说丢包是什么,再讲怎么测、怎么区分是服务器的问题还是线路的问题,最后说CN2、BGP这些线路怎么理解、怎么选。
数据在网络里是一个个数据包,丢包就是其中一部分没能到达目的地。丢了的包,TCP会重传,实时业务则可能直接放弃。
延迟衡量包来回要多久,丢包率衡量有多少包没回来。延迟低不代表不丢包,一条延迟三十毫秒的线路,晚上照样可能丢掉百分之几的包。
TCP发现丢包后要等超时再重传,同时还会主动降低发送速度。结果是页面加载忽快忽慢,大图片传到一半停住,丢包再叠加高延迟时,吞吐下降尤其明显。
SSH表现为输入后字符延迟出现,卡顿;远程桌面是画面卡住、断线重连;游戏等基于UDP的实时业务会出现瞬移、掉帧;API接口则是超时和重试增多,成功率下降。
不存在对所有业务统一的故障标准。不同协议、业务类型和测试方式对丢包的敏感程度并不一样,实时业务比网页更敏感,短时间的测试和长时间的测试结论也不同。比较可靠的做法是看是否持续出现,以及业务是否已经有感知。
服务器CPU或内存不足: 软中断打满、内存吃紧时,网络包来不及处理。用top看CPU,虚拟机里要留意steal值。
网卡、虚拟化平台和网络接口异常: 用 ip -s link 或 ethtool -S 看网卡的dropped和errors计数是否在增长。
机房出口带宽拥堵: 带宽被占满时,超出的包会被丢掉。用iftop或sar观察实时流量。
运营商路由绕行: 路径变长,经过的节点变多,丢包概率相应增加,要看路径本身。
跨境传输链路异常: 跨境段拥塞或故障,表现为多个目标都异常,且集中在同一时段。
用户本地网络不稳定: 换一个网络(比如手机热点)再测,能很快排除。
防火墙和安全策略影响: 连接跟踪表满了会丢包(dmesg里会看到nf_conntrack: table full),安全组限速、ICMP限速也会造成测试结果异常。
ping -c 100 目标IP # Windows用:ping -n 100 目标IP |
看末尾的丢包百分比和延迟波动。Ping用的是ICMP,只能说明基础连通性,不能代表业务端口的情况。
traceroute -n 目标IP # Windows用:tracert 目标IP |
看数据包经过了哪些节点,是否绕路,在哪一跳延迟突然升高。
mtr -rwzbc 100 目标IP # r报告模式 w宽格式 z显示AS号 b同时显示IP和主机名 c次数 |
MTR把Ping和Traceroute合在一起,对每一跳都统计丢包率。-z显示的AS号,可以帮你判断流量走的是哪家运营商的网络。Windows没有mtr,可以用pathping。
mtr -T -P 443 -rwc 100 目标IP # 用TCP的443端口探测 hping3 -S -p 443 -c 100 目标IP # 发送TCP SYN包,统计丢包 |
因为很多网络对ICMP和TCP的处理方式不同,业务跑的是TCP,就应该测TCP。
分别从电信、联通、移动,以及你的用户所在的地区测试,同时测两个方向:用户到服务器,和服务器回到用户的回程。回程路径往往不一样,也更容易出问题。可以使用多地拨测平台。
部分中间路由器会降低ICMP响应的优先级,只对发给自己的探测包限速,转发的数据不受影响。所以单个中间节点显示丢包,不能直接认定该节点发生了实际转发丢包。判断方法是看后续节点和最终目标:如果后面的节点和最终目标都是0%,通常是ICMP限速;如果从某一跳开始,往后一直到终点都持续丢包,那才是真实的丢包。
下面是业内比较通行的理解,各家机房和服务商对线路的叫法并不完全统一,具体以实际路由为准。
走运营商的普通国际出口,比如电信的163骨干网,联通的169网络,移动的CMI。价格较低,但出口带宽被大量用户共享,晚高峰容易拥塞。
机房同时接入多家运营商,通过BGP协议宣告IP,由路由协议在多条路径中选择。好处是三网用户都有路径可走,不用为不同运营商分别买IP;代价是质量取决于机房接入的带宽和选路策略,并非所有BGP线路都同样好。
CN2是电信的高品质网络(AS4809)。通常所说的GT,国际段走CN2,进入国内后,一般还要经过普通的163骨干网才能到达用户,所以晚高峰仍可能受163骨干网拥塞影响。
GIA一般指数据全程在CN2网络内,进入国内也不绕回163骨干网,网络优先级更高,稳定性通常更好,价格也更高。
电信用户访问CN2线路通常最有优势;联通和移动用户走的是各自运营商的路径,表现取决于机房的实际接入。所以买之前要分别测三网,不要只测其中一家。
线路名称只描述了网络类型,不是性能保证。实际体验还取决于机房接入的方式、带宽是否超卖、回程路由和路径的稳定性。所以要看测试结果,而不是只看名称。
业务类型 | 重点关注指标 | 选线思路 |
普通企业网站 | 访问稳定性、带宽 | 综合考虑线路和成本 |
外贸独立站 | 海外访问路径 | 按客户所在地区测试 |
国内用户访问 | 国内运营商回程表现 | 关注三网路由 |
游戏业务 | 延迟、抖动、持续丢包 | 进行实际连接测试 |
API业务 | 响应时间和连续性 | 重视端到端稳定性 |
大文件传输 | 有效吞吐量和带宽 | 关注可用带宽及拥塞情况 |
表里没有直接写“选哪一种线路”,因为答案取决于用户在哪、业务是什么。可以这样用:先确定用户主要在哪家运营商、哪个地区,再要求测试IP,用第三部分的方法实测,把结果作为最后的依据。
晚上的网络流量大幅增加,一般集中在晚上七点到十一点,各类网络的承载压力同时上升。
如果带宽是共享的,同机房或同宿主机上的其他用户用得多,你分到的就少,晚上尤其明显。
跨境链路的出口带宽有限,晚高峰时容易拥塞,表现为丢包增加。
运营商会根据负载调整路由,同一条线路在不同时段的路径可能不同。
晚上也是你自己业务的高峰,CPU、连接数和带宽的占用都在上升,要排除是自己把资源用满了。
用定时任务持续记录,至少覆盖一整天,最好3天,然后对比白天和晚上的结果。
*/5 * * * * (date; mtr -rwzbc 50 目标IP) >> /var/log/mtr.log # 每5分钟记录一次 |
记录的同时,也看服务器自己的CPU和带宽曲线。如果只在晚上丢包,而服务器自身资源正常,问题大概率在线路上。
问清楚具体的机房和供应商,不同机房的网络接入差别很大。
线路是GIA、GT还是BGP,接入了哪几家运营商,要让服务商说清楚,并用路由测试验证。
看带宽数字,更要看是独享还是共享、是否有流量限制。
先拿测试IP,用第三部分的方法实测,白天和晚上都要测。
三家都测,只测一家得出的结论不可靠。
出现网络异常时,服务商能不能提供路由分析、能不能协助排查,响应有多快。
服务器自身问题: 检查CPU、内存、网卡计数和防火墙,处理资源不足、conntrack满、安全组限速。
运营商链路问题: 把MTR测试结果(带时间和方向)提交给服务商,请对方协助分析路由。
带宽拥堵问题: 评估升级带宽,或调整线路类型。
长期网络异常: 根据多时段的测试结果,考虑更换资源或线路。
恒讯科技的香港云主机,线路类型、带宽配置和测试IP的情况,以官网产品页为准;遇到网络异常,可以带上上面的测试结果联系技术支持,一起排查。
理想情况是0%。长时间测试里偶发极小的丢包很常见,是否能接受要看业务:网页和下载较能容忍,游戏、语音、远程桌面这类实时业务更敏感。持续出现的丢包,即使数值不大,也值得排查。
不一定。GIA在网络类型上通常更优,但实际体验还取决于机房接入、回程路由和带宽条件,而且联通、移动用户的访问路径未必走CN2。要以实测为准。
常见的有晚高峰流量增加、共享带宽被占用、国际出口拥塞、运营商路由调整,也可能是自己的业务在晚上负载升高,用多时段测试区分。
看出口带宽是否接近占满,丢包和延迟是否在高峰时一起上升,MTR里是否从某一跳起持续丢包。同时对比白天和晚上的数据。
取决于产品。有的产品线路固定,需要迁移到另一线路的资源,有的可以升级或更换,具体以服务商的产品规则为准,更换前先测试。
Copyright © 2013-2020. All Rights Reserved. 恒讯科技 深圳市恒讯科技有限公司 粤ICP备20052954号 IDC证:B1-20230800.移动站


