在Windows上ossutil上传OSS遇到速率慢不稳定,如何排查
排查: 公网: 1) 首先看下用户端 ping OSS 的完整域名的网络 ping 值是否正常,tracert 是 否有延迟抖动,此步骤可以通过脚本来做,直接输入完整 的 OSS 域名即可; 脚本
@echo off
color 2F
:: 设置窗口底色为绿色
echo.请输入目标域名,比如 www.taobao.com
set /p domain=
title 网络连通性检测-张医博
echo 脚本检测中请稍等...
set dst=%~dp01.ping
echo.
::设置环境变量
ping -n 20 -l 1460 %domain% > %dst%
findstr "TTL" %dst% > nul
if %errorlevel%==0 (for /f "tokens=4 " %%i in ('findstr %domain% %dst%') do ( echo %%i √ 外网正常 )) else (echo %%i × 外网不通)
::ping阿里公共DNS
findstr /v "字节"^ %dst%|findstr /v "的"
::ping阿里公共DNS
tracert %domain%
pause
● 脚本中是 ping 的是大包 1460,发现用户端直接网络超时,此时怀疑是客户的 网络有限制或者网络拥塞,但是 tracert 通的,再进行下一步排查。 ● 尝试降低 ping 包的 len 发现到 1412 ping 可以通过,说明客户端在网络上做 限制,不允许 1460 大包的传输,影响了客户端的上行网络吞吐量。 2) 尝试检查本机的网络负载。 ● 通过本机资源监控看用户端当时的 CPU 负载和本机内存占用较高,实际登陆 到客户端机器上发现系统卡顿,实际资源监控器看到 ossutil 工具线程并没有 跑到和设置的 --job=10 --parallel=10(10*10=100)一样,只是运行了 24 个,说明工具的线程受到了系统 CPU 调度影响,无法将网络吞吐打上去,于是 让用户关系了一些占用 CPU 内存较高的应用后,ossutil 线程数终于打到 69。 3) 灵活调整 ossutil 的线程数和分片的并发数。 --bigfile-threshold=52428800 --jobs=10 --parallel=50 --partsize=52428800。 ● 遇到大文件数量多,以及单一的大文件时我们要灵活调整 ossutil 的相关参数 能够提高我们的 ossutil 的效率。 ● 比如这个案例中客户的文件大小平均是 100M 以上,而且客户的出口带宽是共 享 200M ,也就是客户自己的上线速度理论上也要 20M。 ● 针对这种情况,我们可以把分片大小调整为 50M-10M,同时增加 parallel 分 片的并发数量,尽可能的打满上行的吞吐。当客户端 CPU 核心比较少的时候 不建议分的太小,比如分到 1M 时就会造成 CPU 切片过快,消耗 CPU 计算, 影响系统性能。 如果遇到文件数量单一大文件,或者小文件时,可以不用加任何参数,直接上传 即可;调整完成后用户的上行出口速率能打到 10M 大 B。 4)对比其他家的工具。 ● 比如七牛的 qfetch 以及 qshell 做了性能对比,上行的传输效率相差并不多, 并没有用户反馈了七牛 20M(大 B)阿里云 4M(大 B),基本上 qshell 和 qfetch 的效果都是稳定在 10M 左右。 总结下问题以及需要客户下一步解决: 当使用 ossbrower 上传速度低时可以切换到 ossutil 这个高兴的工具进行测试; 需要用户解决下为什么网络出口限制的大包(1460)的传输,这个问题不解决很难将 网络带宽吞吐提上去。尽量本机不要在负载高的情况下上传一些大文件,如果传输的 话可以关闭一些应用卡顿的程序,或者降低下 ossutil 工具的并发线程数量,不然即 使设置了 100 ,但实际受到系统的 CPU 调用影响,不一定能跑到 100 。降低线程 数,上传的效率也会受到影响。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。