OSS的SDK网络超时怎么处理?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

OSS的SDK网络超时怎么处理?

问问小秘 2020-02-28 22:03:45 468

OSS的SDK网络超时怎么处理?

开发工具 对象存储
分享到
取消 提交回答
全部回答(1)
  • 问问小秘
    2020-02-28 22:07:15

    解决方案 使用SDK联网过程中出现超时,且在上传过程中提示ConnectionTimeOut错误,比较影响用户使用体验。

    排查步骤 由于该问题无法复现,现列举以下可能的原因进行逐一排查,以解决OSS SDK的网络超时问题。

    网络环境相关排查思路,分析网络路径如下。

    手机或PC --- 运营商网络 --- OSS Server

    用户所在的网络环境可能处在运营商网络边缘节点,向运营商网络请求成功率比较低。可以利用CDN的边缘加速节点,减少手机或PC网络对运营商网络的依赖。具体链路如下。

    手机或PC -- CDN就近节点 -- 运营商网络 -- OSS Server
    

    具体的技术方案参见OSS如何开启CDN加速服务。如果问题没有完全解决,仍有ConnectionTimeOut的错误提示,请查看网络配置的分析。

    上传是动态请求,CDN加速效果不佳,建议用全站加速,全站加速对于动态请求有动态加速。另外建议增加下SDK如何设置是走CDN上传,以Java SDK为例,可以参考初始化文档,Endpoint设置为CDN的域名,然后配置文件开启CNAME。

    conf.setSupportCname(true);
    
    

    网络配置相关的排查思路,以下代码为具体的超时错误信息。

    "ConnectionTimeoutError&errormsg=Failed to upload some parts with error: ConnectionTimeout
    Error: Connect timeout for 60000ms, PUT https://***.oss-cn-hangzhou.aliyuncs.com/***/***/***.mp4?
    partNumber=2&uploadId=*** -2 (connected: false, keepalive socket: false)headers: {} part_num: 2
    

    从错误信息中可以得出如下结论 。

    超过60s没有收到服务器的返回信息而断开连接。 尝试分析CDN提供的日志,确认超时的主要原因是分片还没上传成功,连接就已经断开。 如果上传的文件较大,在弱网络环境下,客户端/PC端发送的请求迟迟得不到OSS服务器的响应。 综合以上分析过程,现推荐以下几种解决方案。

    上传方式采用分片断点上传,每个分片的大小不超过1MB。 添加重传机制,保证某一个分片上传失败后还可以继续上传。 增大超时时间。 相关代码如下所示。

    image.png

    总结 如果通过标准OSS域名访问OSS的数据,且这是通过运营商网络对OSS进行访问,由于网络环境的复杂性,例如在一些弱网络环境下或网络不稳定的情况,就会在上传过程中遇到ConnectionTimeOut的网络错误。可以尝试通过以下方式来解决。

    采用分片断点上传,每个分片的大小不要超过1MB,也不要小于100KB。 注:说明OSS服务器不接受小于100KB大小的分片。 添加重传机制,保证某一个分片上传失败后还可以继续上传。 注:说明Android/iOS SDK中已经默认开启,不需要额外配置。 增大超时时间。 通过CDN全站加速服务来提升OSS传输。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章
相似问题