OSS 上传出现异常

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 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搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
存储 对象存储
oss区分存储怎么把图片压缩后再上传?
oss区分存储怎么把图片压缩后再上传?
898 0
|
4月前
|
存储 定位技术 对象存储
阿里云对象存储OSS外网流出流量异常增多导致费用上升的解决方法
阿里云对象存储OSS外网流出流量异常增多导致费用上升的解决方法
192 1
阿里云对象存储OSS外网流出流量异常增多导致费用上升的解决方法
|
对象存储
oss 追加上传支持excel文件使用吗
oss 追加上传支持excel文件使用吗
|
对象存储 iOS开发
iOS开发:日志记录文件及压缩上传OSS
发现APP上传本地日志文件相当的好用,根据之前研究学习的对这一模块做了一些更具体的优化处理。从标题可以看出,实现这一功能分以下几个步骤: 1、日志记录本地文件 2、日志文件压缩[xx.zip] 3、压缩之后的文件上传 4、压缩文件删除
497 0
|
存储 监控 算法
OSS异常流量排查及防护
OSS适用于存储各种类型的静态资源。您在OSS中存储静态资源。当OSS生成流量大的异常流量时,可能是恶意引用黑客攻击或请求访问OSS资源的恶意IP引起的。针对上述情况,本文将向您展示如何定位异常流量以及如何保护流量。
1503 0
OSS异常流量排查及防护
|
网络协议 Java Linux
OSS 上传出现异常
OSSBrower &quot;no space left on&quot; 分析: 有明显报错信息的先 Google 一下,看看是操作系统错误还是 OSSBrower 抛出,经过鉴定错误是 Linux 系统底层返回,说明当时系统的 OSSBrower 所在的目录磁盘满了,开源的错误到处可以看到,自行解决即可。
OSS 上传出现异常
|
存储 边缘计算 缓存
基于OSS作为存储实现加速访问和加速上传的方案的对比
本文通过实现OSS加速的两种方式CDN加速OSS和OSS传输加速来介绍OSS的加速的实现,两种加速方式的区别以及两种加速模式选择使用的场景;
1773 0
基于OSS作为存储实现加速访问和加速上传的方案的对比
|
云安全 运维 算法
JAVA实现RTMP推流上传阿里云OSS的签名URL
由于目前官方帮助文档提供的示例是Python的,本文介绍如何使用JAVA实现生成LiveChannel的签名URL,包括推流地址和播放地址。
2272 0
JAVA实现RTMP推流上传阿里云OSS的签名URL
|
云安全 运维 Java
【OSS最佳实践】JAVA实现RTMP推流上传OSS的签名URL
背景介绍 OSS支持使用RTMP协议推送H264编码的视频流和AAC编码的音频流到OSS。推送到OSS的音视频数据可以点播播放;在对延迟不敏感的应用场景,也可以做直播用途。RTMP推流上传的流程是创建LiveChannel以后生成推流地址,关于这块的介绍在官方帮助文档里也有介绍,具体可以参考文档"RTMP推流上传"。
2115 0
【OSS最佳实践】JAVA实现RTMP推流上传OSS的签名URL
|
JSON API 开发工具
【OSS对象存储】上传OSS提示callbackfailed问题
针对上传文件到OSS对象存储成功后,OSS返回callbackfailed的场景
6098 0
【OSS对象存储】上传OSS提示callbackfailed问题