OSS 上传出现异常-阿里云开发者社区

开发者社区> 张医博> 正文

OSS 上传出现异常

简介: OSSBrower "no space left on" 分析: 有明显报错信息的先 Google 一下,看看是操作系统错误还是 OSSBrower 抛出,经过鉴定错误是 Linux 系统底层返回,说明当时系统的 OSSBrower 所在的目录磁盘满了,开源的错误到处可以看到,自行解决即可。
+关注继续查看

案例一:

OSSBrower "no space left on"

1

分析:

有明显报错信息的先 Google 一下,看看是操作系统错误还是 OSSBrower 抛出,经过鉴定错误是 Linux 系统底层返回,说明当时系统的 OSSBrower 所在的目录磁盘满了,开源的错误到处可以看到,自行解决即可。

案例二:

分片上传成功,下载 404

分析:

如果分片上传成功,肯定不会出现访问 404 的情况,检查下

  • 上传成功后 OSS 有没有返回 requestID ,如果没有返回证明是没有上传成功的。
  • 客户端的代码是否判断分片上传成功就去下载文件是有问题的,分片上传成功不代表文件都上传完成。
  • 分片上传应该在 complete 合并分片之前进行判断 httpstatu==200 & requestID != None 才是真正的上传成功。
  • 如果文件已经合并完成,并且返回 requestID,但还是下载 404 ,需要升级阿里云进行处理。

案例三:

IO error

背景:
客户端上传 OSS 过程中出现 “uploadFile:fail Write error: ssl=0x76d62a40: I/O error during system call, Software caused connection abort ”

分析:

这个是标准的 android 系统的报错,不是 oss 的问题,有很多开源的错误都有描述,建议参考下
参考1
参考2

案例四:

背景:Could not resolve host

2018/10/24 14:03:47 hlg_matting_PreF (pid=15693)(error): parseUrl2Image.hpp(186), read_element: image_url_service connect fail: Could not resolve host: da.oss-cn-hangzhou-internal.aliyuncs.com, url: https://da.oss-cn-hangzhou-internal.aliyuncs.com/mattings/0/images/20181024-135354-f5ee.jpg

上传 OSS 文件解析失败,DNS 无法解析于域名,此问题需要排查下 DNS 是否工作正常,或者主机上的 DNS 服务是否正常。

案例五:

背景:python SDK 分片上传失败

用户通过 python SDK 的分片上传函数上传到 OSS 失败,碎片管理中出现很对碎片。

1

  • 先确认是直接传到 OSS,还是通过其他 proxy 传输到 OSS (类似 CDN),如果经过 CDN 再上传到 OSS 需要在 OSS 上配置跨域的头,Access-Control-Allow-Origin 、Access-Control-Allow-Mehtod 、Access-Control-Allow-header,并且将 Etag 暴露出去。
  • 客户端上传失败是因为网络超时,还是捕获到异常上传失败,需要详细看下捕获到的 SDK 异常信息分析,如果是网络超时导致上传失败,建议使用断点续传来替代普通上传。断点续传支持分片,并发,已经弱网的兼容。
  • 清理掉上传失败的碎片文件重新上传。
  • 当以上操作都解决不了你的问题时,需要提供以下信息升级阿里云便于快速定位:

    • 提供 SDK 异常时返回的 requestID,这个属性是 response header 中携带的记录了完整的 OSS 请求过程。
    • 客户端部署 tcpdump ,然后重新运行代码上传,保存抓包。
      tcpdump -i <网卡出口名称> -s0 host <访问oss的域名> -w faild.pcap

案例六:

C# SDK 分片上传报错

错误    2019/2/13 10:24:28    ServerApi    0    无    "Failed to stop service. System.InvalidOperationException: An unhandled exception was detected ---> System.IO.IOException: Unable to read data from the transport connection: The connection was closed.
   at Aliyun.OSS.Util.AsyncResult.WaitForCompletion()
   at Aliyun.OSS.Common.Communication.RetryableServiceClient.EndSend(IAsyncResult ar)
   at Aliyun.OSS.Util.OssUtils.EndOperationHelper[TResult](IServiceClient serviceClient, IAsyncResult asyncResult)
   at SAAS.Common.Aliyun.MultipartUploadSample.UploadPartCallback(IAsyncResult ar)
   at Aliyun.OSS.Common.Communication.ServiceClientImpl.<>c__DisplayClass5.<BeginSetRequestContent>b__4(IAsyncResult ar)
   at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threadin..."

### 排查

  • 出现类似报错是因为客户设置的分片过小导致,先问题出用的是分片上传 还是断点续传;
  • 如果是分片上传,根据文件总大小合理的提升分片 size ,比如客户原来设置的是 50M,现在可以提升到 100M 测试;
  • 另外请使用断点续传重新替换下分片上传,此案例在分析过程中通过客户端的抓包发现大量的丢包重传,这种情况下是普通的分片可能直接报错,不会再进行重传了。
    image

案例七:

OSS 上传后,但显示长度为 0

排查

1) 首先排查下客户端上传是用什么方式 (SDK、API、工具)不同的方法可能使用也是不同的。确认好使用 SDK 我们使用客户端的原文件进行上传测试,看问题是否可以复现。

  • 可以复现,说明我们自己可以进行排查无需用户配合;
  • 我们自己复现不了说明问题是客户个案,肯定不是 工具或者产品的问题;

2) 获取当前问题发生的 OSS requestID

  • 如果是工具,可以通过增加 log 的方式来获取,比如 ossutil 有时候会在控制台显示,也可以通过当前目录下的隐藏的操作日志来确认;
  • 如果是 SDK ,客户可以通过代码返回的结果对象中获取到这个属性,比如 java SDK

3)当获取到 requestID 查询到日志后,先看下用户上传的结果是 200 还是异常的,如果是 200 说明上传成功;
其次看下用户写入的长度是多大?如果客户写入的就是 0 字节,那么和 MD5 没有任何关系,OSS 除了分片、断点续传方法对第一片的大小有限制(100KB)外,其余的普通上传方法均没有对文件最小值做限制,也就是用户可以上传一个空文件。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OSS异常流量排查及防护
OSS适用于存储各类型的静态资源,较多的用户将静态资源存储在OSS上。当OSS产生大流量的异常流量要如何进行定位分析,OSS恶意访问可能是恶意referer盗链使用或者恶意IP恶意请求访问OSS资源导致的,本文对上述内容进行了介绍;
5454 0
Jenkins 教程(二)实现本地资源ssh上传
在教程一中我们只实现了在jenkins容器中的打包和结果通知,这节教程将用一个ssh工具将我们package完的项目上传到我们的服务器中。 1. 安装插件 Publish over SSH 完了点击直接安装 2. 插件的系统配置 配置完成后测试一下: 3. 插件的工程配置 最后一个框是在服务器运行什么脚本。
866 0
关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
原文:关于异常Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 关于Microsoft.CSharp.RuntimeBinder.RuntimeBinderException的异常一般来自于两种, 第一种: Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported 解决它的办法是,直接在项目引用中添加 Micorsoft.Csharp 就可以了。
1356 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4623 0
PHP 使用 OSS上传文件
PHP 使用 OSS上传文件
2904 0
SSH 文件上传错误:encountered 1 errors during the transfer终极解决方法:
以下方法简单排序,从简单到复杂: 法一:在SSH Secure File Transfer(上传文件那个),打开“Operation”菜单,打开“File Transfer Mode”子菜单,再选择“Binary”,OK! 法二:把服务器上同名文件删掉再传 法三:如果文件在桌面上,将要上传的文件复制到其它分区,再上传! 法四:到 http://winscp.
819 0
JS实现上传进度条
文件上传的时候经常需要等待,这个时候可以考虑增加进度条来实现这个技术,下面主要是使用js模拟进度条,记住这是模拟进度条,不是真实的进度条,因为如果是真实的进度条需要实现获取文件的真实大小,以及监听每时每刻文件上传的大小,获得这些数据后,还需要使用js技术把数据传递到前端,貌似目前 哥哥还实现不了这个...
1409 0
[ssh ][异常]The type org.springframework.dao.support.DaoSupport cannot be resolved........
<p>写spring的时候,使用SqlMapClientDaoSupport,结果报出异常:</p> <p><span style="font-size:16px"><strong><span style="color:#333399">The type org.springframework.dao.support.DaoSupport cannot be resolved. It i
1960 0
+关注
张医博
喜欢钻研新的语言,动手实践自己想要学会的知识。
115
文章
0
问答
来源圈子
更多
作为全球云计算的领先者,阿里云为全球230万企业提供着云计算服务,服务范围覆盖200多个国家和地区。我们致力于为企业、政府等组织机构提供安全可靠的云计算服务,给用户带来极速愉悦的服务体验。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载