开发者社区> 问答> 正文

ECS上JavaSDK访问OSS总是超时怎么解决?


先描述情况:
在ECS上连接到OSS读取或验证文件
Java SDK使用版本为最新2.0.2
ClientConfiguration配置为默认,如最大连接数512,超时时间50*1000等。
暂时没动过他源码
由com.aliyun.oss.common.comm.DefaultServiceClient.sendRequest调用org.apache.client.HttpClient.execute时抛出,
已知异常类是org.apache.http.conn.ConnectTimeoutException
好心酸


[ErrorMessage]: Timeout waiting for connection from pool
[RequestId]: Unknown
com.aliyun.oss.ClientException: [ErrorCode]: ConnectionTimeout
[ErrorMessage]: Timeout waiting for connection from pool
[RequestId]: Unknown
    at com.aliyun.oss.common.utils.ExceptionFactory.createNetworkException(ExceptionFactory.java:31)
    at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:57)
    at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:173)
    at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:133)
    at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:68)
    at com.aliyun.oss.internal.OSSObjectOperation.getObject(OSSObjectOperation.java:190)
    at com.aliyun.oss.OSSClient.getObject(OSSClient.java:398)
    at com.aliyun.oss.OSSClient.getObject(OSSClient.java:372)







[ErrorMessage]: Timeout waiting for connection from pool
[RequestId]: Unknown
com.aliyun.oss.ClientException: [ErrorCode]: ConnectionTimeout
[ErrorMessage]: Timeout waiting for connection from pool
[RequestId]: Unknown
    at com.aliyun.oss.common.utils.ExceptionFactory.createNetworkException(ExceptionFactory.java:31)
    at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:57)
    at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:173)
    at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:133)
    at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:68)
    at com.aliyun.oss.internal.OSSObjectOperation.putObject(OSSObjectOperation.java:92)
    at com.aliyun.oss.OSSClient.putObject(OSSClient.java:334)

展开
收起
亚忆电子 2015-03-31 15:27:11 22396 0
7 条回答
写回答
取消 提交回答
  • 使用的最新版本吗
    2017-04-18 06:45:28
    赞同 展开评论 打赏
  • ReECS上JavaSDK访问OSS总是超时怎么解决?
    遇到同样问题,并且虽然 callback 调用的 是 onFailure,但是实际上文件已经传到 oss上,通过控制台能够看到
    2017-04-17 15:43:57
    赞同 展开评论 打赏
  • hipac
    回 4楼莫名的帖子
    官方的sdk没有修复这个问题吗?还是需要使用者自己去关闭连接?我现在也出现这个异常,坑爹了

    -------------------------

    回 3楼shinenuaa的帖子
    官方的sdk没有修复这个问题吗?还是需要使用者自己去关闭连接?我现在也出现这个异常,坑爹了

    -------------------------

    回 10楼莫名的帖子
    谢谢,目前用的2.0.3,我先升级观察下
    2015-12-19 20:08:03
    赞同 展开评论 打赏
  • ReECS上JavaSDK访问OSS总是超时怎么解决?
    我是出现这个问题,你能说具体点如何解决的么
    2015-07-20 15:10:05
    赞同 展开评论 打赏
  • ReECS上JavaSDK访问OSS总是超时怎么解决?
    1、ping一下Endpoint拿到ipaddr;
    2、netstat -ano | grep $ipaddr,查看下是不是有很多处于CLOST_WAIT状态的HTTP连接。

    -------------------------

    回 9楼(洋驼) 的帖子
    这是httpclient连接池未能及时释放造成的,新版本已经修复,请升级至2.0.5以上版本。
    2015-03-31 19:52:05
    赞同 展开评论 打赏
  • 回 2楼(亚忆电子) 的帖子
    已在排查你所说的问题
    2015-03-31 19:36:29
    赞同 展开评论 打赏
  • ReECS上JavaSDK访问OSS总是超时怎么解决?
    噢对了。所有 相关的InputStream我都会close的

    -------------------------

    ReECS上JavaSDK访问OSS总是超时怎么解决?
      迫我自己封装的节奏吗!!!好懒的啊我这人

    -------------------------

    回3楼shinenuaa的帖子
    就是4楼说的那个问题!

    -------------------------

    回4楼莫名的帖子
    嗯! 我修改了sdk代码,及时关闭连接,虽然还是有TIME_WAIT和CLOSE_WAIT的出现,但少了很多。ECS下测试了1万个txt上传没报错!
    2015-03-31 15:29:39
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载