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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 我们来结合最近发生的一个真实的用户案例——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产品的技术支持,专注于云计算相关的安全问题以及网络问题。坚信:“不忘初心,方得始终”

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
1月前
|
弹性计算 监控 数据可视化
ecs资源可视化
ecs资源可视化
23 3
|
30天前
|
弹性计算 运维 监控
ECS资源监控
ECS资源监控涉及CPU、内存、磁盘I/O、网络流量、系统负载和进程的关键指标,通过云服务商控制台、监控服务、API与SDK、运维工具进行实时监控和告警设置。支持历史数据查询、事件监控,以及使用Windows资源监视器和Linux系统工具进行操作系统层面监控。全面监控确保ECS实例稳定运行、资源有效利用和问题及时处理。如需特定云服务商的指导,请询问。
31 3
|
3月前
|
安全 Java Spring
Spring Security OAuth 资源服务器认证浅析
【1月更文挑战第18天】之前的几篇文章介绍了如何进行用户认证并向客户端分发 Token,以及 Token 是如何生成的,这篇分析一下,当客户端拿着 Token 去访问资源的时候,资源服务器是如何验证 Token 是否合法的。
51 2
|
1月前
|
缓存 网络协议 数据可视化
WinSCP下载安装并实现远程SSH本地服务器上传文件
WinSCP下载安装并实现远程SSH本地服务器上传文件
|
3月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
192 0
|
20天前
|
缓存 监控 Linux
服务器中常用的几个资源监控工具整理
【4月更文挑战第2天】服务器中常用的几个资源监控工具整理
361 13
|
1月前
|
JavaScript 前端开发 应用服务中间件
通过域名的方式访问服务器里的资源
通过域名的方式访问服务器里的资源
24 0
|
1月前
|
监控 JavaScript 安全
监控内网电脑软件设计与实现:基于Node.js的服务器端架构分析
在当今信息技术高度发达的时代,监控内网电脑的需求日益增长。企业需要确保网络安全,个人用户也需要监控家庭网络以保护隐私和安全。本文将介绍一种基于Node.js的服务器端架构,用于设计和实现监控内网电脑软件。
99 0
|
1月前
|
弹性计算 开发工具 对象存储
ECS实例通过OSS内网地址访问OSS资源
ECS实例通过OSS内网地址访问OSS资源
39 0