Aliyun OSS Java SDK超时时间设置

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 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);

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

提示

  • OSS Java SDK超时单位都是毫秒。
相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
目录
相关文章
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1806 5
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
157 0
|
固态存储 Java 网络安全
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)
【Azure Developer】使用Java SDK代码创建Azure VM (包含设置NSG,及添加数据磁盘SSD)
225 0
|
缓存 Java API
【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数
【Azure 服务总线】详解Azure Service Bus SDK中接收消息时设置的maxConcurrentCalls,prefetchCount参数
264 0
|
API 开发工具 vr&ar
PicoVR Unity SDK⭐️一、SDK下载、项目设置与程序初始配置
PicoVR Unity SDK⭐️一、SDK下载、项目设置与程序初始配置
|
缓存 JavaScript 前端开发
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)更新时间(2020-10-29)
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
安全 Go 开发工具
对象存储OSS产品常见问题之go语言SDK client 和 bucket 并发安全如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
504 9
|
5月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
287 1
|
5月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
310 1

相关产品

  • 对象存储