oss上传判断_OSS 排查方案之上传 OSS 延迟超时

本文详细介绍了OSS上传延迟或超时的各种排查条件,包括检查requestID、使用内网地址、网络测试、客户端资源占用等。并提供具体案例分析,如开启crc64的影响、JAVA SDK上传慢的原因、远程网络上传问题以及put object超时的解决策略,强调在网络问题中抓包分析的重要性。
摘要由CSDN通过智能技术生成

基础排查

condition 1

上传 OSS 出现慢的场景,OSS 会返回一个 requestID 属性,请保留这个 requestID 这是 OSS 所有信息的查询入口,升级阿里云时可以快速定位问题,如果上传超时的话时没有这个属性的。 requestID 可以通过抓包获取到,也可以在代码中解析 OSS 的返回 http result 结果获得。

condition 2

客户端在上传 OSS 时用的内网的地址还是公网的 OSS 地址,如果使用了阿里云主机服务,并且和 OSS 是同一个 region ,强烈推荐使用 internal 内网地址操作 OSS 这能大大提升你的请求速度。OSS 提供的域名可以参考 https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.6.571.4dcd2841C29fHi

condition 3

如果走公网上传 OSS ,速度无法保证,排查需要结合多个网络测试命令,比如常用

ping -c 50 -i 0.01 -s 1024

mar

traceroute ,如下测试客户端的网络出口也不是很稳定,需要多次的测试。

condition 4

排除客户端出口带宽是否被打满,可以通过 iftop 看下客户端的出口流量。

condition 5

netstat 查看下主机的 TCP 链接是否被打高,

condition 6

客户端的上传代码读取的是本地文件还是网络流,如果是读取的网络流然后上传到 OSS ,那读文件的时间也会影响到上传时间。建议用本地文件先测试。

condition 7

客户端的代码是否开启过 crc64 ,开启这个功能对上传的性能影响比较大,开启 crc 后,要在本地先对文件循环冗余校验完后,在开始上传,很消耗性能。

"看病" 对号入座

按照上面描述的分成多个问题进行描述,基本都是上传延迟的问题。

case1 开启 crc64 上传速度下降

【分析】

该病例,使用 ossutil 工具对比 OSS 的 SDK 上传速度比 osstuil 慢几十倍。

1、通过截图也能看出来确实慢,但是 SDK 即使代码写的再差也不能如此地步。

2、翻阅代码中发现 OSS SDK 在初始化 ossclient 时开启了 crc64 ,关闭后性能直线上升,回复到正常状态,秒传。

auth = oss2.Auth('AK', 'SK') bucket = oss2.Bucket(auth, 'endpoint', 'bucket',enable_crc=False)

【结论】如果使用 OSS SDK 时建议关闭掉 crc64 ,可以在请求头中增加 Content-MD5 的方式用 MD5 替换 crc64 ,性能更快。

case2 调用 JAVA SDK 上传打印出的时间判断处理很慢

【分析】

1、通过 JAVA 2.8.3 版本的上传接口 PutObjectResult putObject(String bucketName, String key, InputStream input) 上传文件到 OSS ,通过打印前后的系统时间发现每次上传都要几十秒,但是通过 requestID 和抓包的结果都很快。

2、通过完成的抓包,可以看到网络传输开始到结束的时间非常短,物理的传输时间都很短,证明确实很快就完成上传的操作,但为什么打印的时间差和抓包有这么大差距,需要看下客户端的代码。发现客户端的代码再调用 putobject 时传入的文件是一个网络流,通过公网去读源文件,代码 debug 发现时间整体卡在了读的延迟上,于是更换了本地文件测试后发现秒传。

【结论】建议出现这类问题先抓包看下实际的物理传输是不是真的慢,还仅是自己打印的时间慢而已。

case3 教学作业大量上传超时

【分析】

第一个问题:客户端时再内蒙古,OSS 再杭州,通过公网上传 OSS,在学校内部上传作业失败率很高,但是在校外上传失败率明显下降。日志报链接失败。

ossupload by all localcatch, filepath:/storage/emued/0/Homrk/com.identhomework/temp0/1539238757673.JPEG,ex:Failed to connect to /124.160.145.44:80

[ErrorMessage]: Failed to connect to /124.160.145.44:80,time:2018-10-11 14:56

第二个问题:客户端网络内无法解析公网域名。

第二个问题比较好解决,客户端的 DNS 服务出现问题导致解析失败,或者 DNS 请求超时无法解析出域名。第一个问题我们就要用上述的基础排查一步步看

1、排查到 ping 时就发现客户端的网络比较差,丢包率达到了 6% ,这种问题肯定需要在客户端进行抓包分析。

2、通过抓包发现客户端的网络丢包很高,同时出现了很多乱序,只截图了部分的抓包信息。通常都知道少量的乱序没有关系,但是大量的乱序报文会造成重传

而且频繁的丢包,也会导致不停的重传。

【结论】综合现象来看当客户端由学校转移到家里后失败率就下降,学校的网络避免不了嫌疑,但是由于一致没有抓包链接失败的包,只能从网络的角度分析,客户端的弱网导致了链接失败超时。此类问题只能通过抓现象包来进行分析,遇到这类问题第一时间抓包保留现场。

case 4 put object 写入超时

【分析】

2、如果替换 ossutil 还出现上传 502 的话,就必须要在客户端抓包分析,在此之前先将文章开始的基础排查做一遍。

了解更多请微博关注阿里云客户满意中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值