Aliyun OSS Java SDK超时时间设置

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
日志服务 SLS,月写入数据量 50GB 1个月
简介: Aliyun OSS Java SDK超时时间设置

Aliyun OSS Java SDK发送一个请求,有5个阶段:
java_sdk_timeout

阶段Ⅰ

  • 从连接池中获取连接,如果使用的连接已经达到最大连接数,则等待直到有连接释放,或达到最大超时时间,抛出异常ConnectionPoolTimeoutException。如果设置了比较大最大连接数,但是并不想让连接池中真正占用很多连接,SDK会自动关闭闲置时间较长的连接。
  • 最大连接数默认1024个,使用ClientConfiguration.setMaxConnections设置。
    从连接池中获取默认不超时,可以通过ClientConfiguration.setConnectionRequestTimeout设置。默认SDK会关闭闲置超过60秒的连接,可以通过ClientConfiguration.setIdleConnectionTime设置。
  • OSS Java SDK使用连接池,是为了复用连接,减少发送请求时重复建立连接、断开连接的时间,提高服务效率、增强服务器稳定性。

阶段Ⅱ

  • 从连接池中获取的连接,如果尚未建立到OSS连接,则新建。新建连接有超时时间,超时报ConnectionTimeout。如果从连接池中获取的连接已经建立,检查连接闲置时长。如果连接闲置时长没有超过阈值,直接复用连接;如果超过阈值,检测连接有效性,有效继续使用,无效重建连接。
  • 新建连接默认超时时间50秒,可以通过ClientConfiguration.setConnectionTimeout设置。
  • 默认连接闲置时长超过2秒,复用前检查连接是否有效。 闲置连接使用前有效性检查功能在2.1.2前的版本有bug,2.1.2及其后版本修改,原因及问题详见[常见问题]。

阶段Ⅲ

  • 发送请求。请求发送的速度受网络速度的影响。发送请求的超时基于TCP协议栈的超时重传机制,一般不需要设置超时时间,目前也没有提供方法设置。

  • LINUX内核的TCP协议栈重传超时一般是15到30分钟。

阶段Ⅳ

  • 请求发送成功后,等待回复。等待回复是有超时时间的,超时会抛出异常SocketTimeout。等待数据回复超时时间默认50秒,可以通过ClientConfiguration. setSocketTimeout
  • 该参数请根据实际网络情况设置。

阶段Ⅴ

  • 接收数据。如果数据较大,会分多个包传输,收到第N个包后,超时时间内未收到第N+1包在,也会抛出异常SocketTimeout。
    包间隔超时时间与等待数据回复超时时间由参数ClientConfiguration.setSocketTimeout控制 。
  • 该参数请根据实际网络情况设置。

一些应用场景下用户需要控制整个请求的时间,即上面5个阶段的时间总和。如视频直播场景下,上传一个请求是有时效性限制的。OSS Java SDK提供了请求级别的时间设置:

// 需要开启,默认不开启
ClientConfiguration.setRequestTimeoutEnabled(true);
// 设置请求超时,单位毫秒,默认值300秒
ClientConfiguration.setRequestTimeout(300 * 1000);
AI 代码解读

如果请求超过了设置时间尚未完成,请求失败,抛出异常ClientException。

提示

  • OSS Java SDK超时单位都是毫秒。
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
打赏
0
0
0
2
3059
分享
相关文章
|
5月前
|
java设置栈内存大小
在Java应用中合理设置栈内存大小是确保程序稳定性和性能的重要措施。通过JVM参数 `-Xss`,可以灵活调整栈内存大小,以适应不同的应用场景。本文介绍了设置栈内存大小的方法、应用场景和注意事项,希望能帮助开发者更好地管理Java应用的内存资源。
262 4
如何在Java爬虫中设置动态延迟以避免API限制
如何在Java爬虫中设置动态延迟以避免API限制
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
7525 12
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
250 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
如何设置 Java 的环境变量
设置Java环境变量是使用Java开发工具和运行Java程序的前提。主要步骤包括:安装JDK,配置系统环境变量中的JAVA_HOME、PATH和CLASSPATH,确保命令行可直接调用javac和java命令。
396 6
java程序设置开机自启
java程序设置开机自启
522 1
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
413 1
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
319 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
293 0
|
8月前
|
Android SDK
【10月更文挑战第21天】
219 1

云存储

+关注

相关产品

  • 对象存储
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问