ECS资源下载慢 ,如何分析定位?

简介: 我们来结合最近发生的一个真实的用户案例——ECS上的资源下载速度被限,来看看针对资源下载慢的问题,如何根据现有的情况一步步进行分析和定位。

e62e3e198532ba850bd422c71e50671a66e883f6

问题背景

4月中旬,收到某用户反馈,从华北2地域的ECS下载华东1的ECS上的资源,下载速度被限制为2M,此问题会对用户的业务产生极大的影响,涉及到企业的大量业务订单,问题非常紧急。

收到用户反馈后我们立即根据现有的情况进行分析。

分析思路

下载速度的影响因素有哪些?

1、网络延迟;

2、客户端&服务端的出入带宽限制;

3、运营商中间链路限制(有些情况下就算ping延迟低,但也可能看到TCP或UDP协议的传输过程中被运营商认为的加入延迟来限速);

4、客户端的多线程行为;

5、服务端和客户端的OS层面的TCP协议层面的接受发送窗口(Auto Tuning)的相关配置,Selective ACK协议的行为;

注:

TCP协议层面的接受发送窗口(Auto Tuning)的相关配置,如下:

TCP 滑动窗口(TCP Windowing)大小,窗口缩放因子(Window Scaling)的值。

分析过程

测试网络延迟

华东1与华北2之间互ping延迟为30ms左右。

d01f9d653d209a19d15766d2f37de20983ccd9d0

检查带宽限制

检查客户端与服务端的ECS的出入带宽均没有到达上限。

测试使用多线程下载

问题是ECS限制了2M的下载速度,为了佐证ECS下载速度没有限制,测试使用mwget,多线程下载工具下载,轻松跑到30M左右。

说明ECS本身网络是没有限制的。

抓包分析报文

三次握手的过程如下(下图为Server的抓包)

这里也走了一些歪路 ,查看ACK的的交互有30ms左右的延迟,就定位为延迟导致的网络延迟。

如在报文完整的传输过程中,可以看到每隔30-50个报文就会出现延迟30ms的情况。

但是我们进行了对比测试,从上海,深圳等测试,

如:ping延迟小的情况下,有出现下载慢,而ping延迟大,有出现下载快的情况。于是思考延迟只是这个问题出现的一方面的原因。故继续分析报文。

b3cd5d319571ace738179d35f202c4351ec7f621

考虑是否有网络限速的可能

查看报文出现30ms左右延迟的报文,均是ACK的报文。不太像网络限速。

d42c3ec7dff32e4ed25a467af2f79525a6b4e4db

6a0a32cfe865abdfc00b2460af9f619ef1a7e735

TCP 参数检查

如上,单线程最多能够下载2M左右,但是多线程能够跑很高;判断可能是TCP参数导致的问题。

多线程与单线程下载的区别是:
 
多线程是使用多个TCP流进行下载。
 
而单线程只有一个TCP流。

从这个角度分析TCP 三次握手信息:

SYN:
0f6bf52a05f3ca0ff2b3139ad01fc9e83dad4878
SYN,ACK 
38f78934ec644bb4ec0cb335819c46c49063bd2a

ACK

4b6f7e93890e756c12a852033b2fd3e6f2093bd1

三次握手完成后的结果为:没有启动窗口缩放功能。

window滑动窗口的大小是固定的。

查看系统配置:

cat /proc/sys/net/ipv4/tcp_window_scaling

查看确实没有开启。

8530b646984ff60ce49c97c2b21e7a7cf49940a8
输入:

echo 1 >  /proc/sys/net/ipv4/tcp_window_scaling

修改为1后下载能够上升到20-30M左右,符合预期。

 adfb4b00794a9a724b5ac3b7ca0752df55e3c23b

总结

1、如分析思路中描述的内容,影响下载速度的因素有很多,在定位时需要全部的内容都分析,然后找到最影响传输速度的项,针对性的进行优化。

2、本案例中需要了解:TCP 滑动窗口(TCP Windowing)、窗口缩放因子(Window Scaling)这2个概念的含义。

注意:TCP Window Scaling仅在TCP连接的双方都开启时才真正有效

3、这个案例的原因为没有开启Window Scaling导致传输速度不理想,属于TCP传输优化内容。


专家介绍

枫凡,目前在阿里云从事ECS产品的技术支持,专注于云计算相关的安全问题以及网络问题。坚信:“不忘初心,方得始终”

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
弹性计算 运维 Kubernetes
使用ACK Edge统一管理多地域的ECS资源
本文介绍如何使用ACK Edge来管理分布在多个地域的ECS资源。
|
1月前
|
安全 云计算
服务器系统资源不足怎么办
服务器系统资源不足怎么办
44 4
|
2月前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
85 6
|
3月前
|
机器学习/深度学习 弹性计算 缓存
阿里云服务器经济型e实例与通用算力型u1实例对比分析与选择指南
在阿里云服务器的实例规格中,经济型e实例和通用算力型u1实例是很多个人和普通企业级用户常见的选择,经济型e实例与通用算力型u1实例的主要区别在于性能、应用场景及价格策略。本文将详细对比这两种实例的性能、应用场景及价格策略,以供参考。
|
3月前
阿里云国际版购买了服务器后如何下载发票?
阿里云国际版购买了服务器后如何下载发票?
|
3月前
|
人工智能 运维 Kubernetes
87cloud案例分析:阿里云国际服务器如何支持在线教育
87cloud案例分析:阿里云国际服务器如何支持在线教育
|
3月前
|
弹性计算 安全 Linux
阿里云国际版ECS云服务器ping不通的原因分析
阿里云国际版ECS云服务器ping不通的原因分析
|
3月前
|
域名解析 弹性计算 缓存
阿里云国际云服务器全局流量分析功能详细介绍
阿里云国际云服务器全局流量分析功能详细介绍
|
3月前
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
286 0
|
5月前
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
527 1
Linux 服务器下载百度网盘文件