赞
踩
延时高,网络卡,卡住了美好!
应用抖,业务惊,惊扰了谁的心?
当你在观看世界杯梅西主罚点球突然视频中断了几秒钟
当你在游戏中奋力厮杀突然手机在转圈圈无法响应
当你守候多时为了抢一张化妆品优惠券突然迟迟加载不出来...
我们经常在观看视频、手机游戏、网上购物时,会遇到上面这些烦心事,作为用户,我们总有被卡在“临门一脚”的感觉,此时的你,是否有种想把手机或电视砸掉的冲动?或者破口大骂网络服务商的线路不稳定?是的,这种现象一般是网络抖动引起的。
“高频率、难攻克”一直是业界对抖动问题的评价,特别是在我们云计算场景下,复杂的网络拓扑,众多的业务承载形态,容器、虚拟机和传统的物理机并存,业务的应用也出现了微服务众多、多语言开发、多通信协议的鲜明特征,这给我们定位这类问题带来非常大的挑战。试想从我们的手机或者 PC 浏览器发出的一个付款请求,可能要经过你的家庭路由器,运营商网络,云服务商物理网络、虚拟网络,以及电商服务器,容器或者虚拟机,最后才是具体的服务程序对请求进行处理,这里面每个节点都可能存在延迟。
购物、游戏、视频、金融等领域,受限于传统的 IDC 物理网络的环境因素,多样化的云网络场景,以及业务系统的复杂性,所有涉及到网络请求和处理的地方,都会存在业务网络抖动的情况。
在云服务商内部,业务所在的 ECS 服务器,日志的存储和上传、数据库访问,可能分散在不同的节点,节点之间也有各种网关和内部网络。当出现抖动时,每个功能模块都只能维护自己的节点诊断信息,无法通过统一平台呈现具体时延信息,相互之间的自证清白的能力比较弱。
到具体业务和应用处理上,由于操作系统上面跑着各种任务,相互之间的调度和处理都会有干扰,内存分配、报文解析、IO 访问延迟等等,都给我们分析抖动问题带来困难。
前面我们一直在提延迟,提抖动,以及抖动如何难分析。现在我们回到一个最初的问题,什么是网络延迟?什么是网络抖动?云计算场景中抖动都有哪些具体的现象?
网络延迟是指报文在网络中传输所用的时间,即从报文开始进入网络到它开始离开网络所经历的时间。各式各样的数据在网络介质中通过网络协议(如 TCP/IP)进行传输,如果信息量过大不加以限制,超额的网络流量就会导致设备反应缓慢,从而造成网络延迟。
而抖动是 Qos 里面常用的一个概念,当报文经过交换机、路由器等设备时,容易出现网络拥塞,通常报文会进行排队,这个排队延迟将影响端到端的延迟,并导致通过同一个连接进行传输的报文经历的延迟各不相同,所以抖动,就是用来描述这样一延迟变化的程度。网络抖动值越小说明网络质量越稳定。举例说明,假设 A 网络最大延迟是 15 毫秒,最小延迟为 5 毫秒,那么网络抖动值是 10 毫秒
总结起来,网络抖动是指在某一时刻业务的流量下跌、正常业务指标受损,网络出现延迟等。延时和抖动主要的后果是影响用户体验,特别是在游戏场景中更是来不得半点抖。试想当你在打怪买装备时抖了那么 20ms,装备没了,此时捶胸顿足砸键盘也于事无补啊。
另外,云场景下,用户不仅关心正常场景的平均延迟,对异常场景下的长尾延迟,也越来越关注。影响长尾延迟的因素,如宕机、网络延时、磁盘抖动、系统夯机等等。长尾延迟还存在着放大效应,比如系统 A 串行向系统 B 发送 5 个请求,前一个请求返回才能进行后一个请求,当系统 B 出现一个慢请求时,会堵住后面 4 个请求,系统 B 中的 1 个 Slow IO 可能会造成系统 A 的 5 个 Slow IO。所以,每个节点的每一个系统服务都有义务主动减少或降低处理延迟。
我们通常说的网络抖动,拿云计算场景来看,可能有如下现象:
1、两台 ECS 服务器之间从发出 ping request 到 reply 回复的正常水平是 5ms,在某个时间点突然发生抖动,增加至 50ms,随后马上恢复。
2、负载均衡 SLB 上的 HTTP 请求平均延迟的正常水平在 10ms,在某个时间点突然发生抖动,整体延迟增加至 100ms,随后马上恢复。
3、通过 ECS 访问 RDS 数据库,在某个时间点突然打印大量日志
如"SocketTimeOut"、"Request timeout" 等,持续时间为秒级,随后马上恢复。
从上述现象可以看出,网络抖动在云计算场景下有了新的理解,它产生的原因可能是由于发送端和接收端之间的链路、系统内部的一个瞬时抖动,比如业务所在 Linux 系统 crash、链路有丢包重传、网卡 up/down、交换机缓存瞬时打满等。
我们先看一下解决网络延迟和抖动的一般方法:
1、交换机和路由器等设备,主动避免网络报文排队和处理时间。
2、云网络及上云等网关设备主动降低处理延迟,通过硬件提
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。