Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

多线程并发调用,导致死锁 #10

Closed
jiangongduan opened this issue Apr 11, 2016 · 9 comments
Closed

多线程并发调用,导致死锁 #10

jiangongduan opened this issue Apr 11, 2016 · 9 comments

Comments

@jiangongduan
Copy link

多线程同时调用时,会导致死锁,在httpClient连接池的地方。at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) at org.apache.http.pool.PoolEntryFuture.await(PoolEntryFuture.java:138) at org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:306) at org.apache.http.pool.AbstractConnPool.access$000(AbstractConnPool.java:64) at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:192) at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:185) at org.apache.http.pool.PoolEntryFuture.get(PoolEntryFuture.java:107) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:276) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:263) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:113) at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:121) at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:67) at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:92) at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:140) at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:111) at com.aliyun.oss.internal.OSSBucketOperation.listObjects(OSSBucketOperation.java:410) at com.aliyun.oss.OSSClient.listObjects(OSSClient.java:498) at com.aliyun.oss.OSSClient.listObjects(OSSClient.java:492) at cn.archbox.file.dao.AliyunBaseDao.listObjectSummary(AliyunBaseDao.java:235)

@baiyubin
Copy link
Collaborator

从堆栈上是httpclient从连接池中获取连接卡住:
可能有以下原因:1. 连接泄漏,使用了getObject返回的输入流,使用后一定要close;
2. 使用了getSimplifiedObjectMeta,2.2.3版本前有bug,没有关闭连接;
3. 使用了2.1.2前的sdk版本, 2.1.2前的sdk使用http client 4.4,http client 4.4有bug,请升级sdk到2.1.2以上。
如果还没有解决,请旺旺联系oss_support。

@jiangongduan
Copy link
Author

多谢多谢,已经用最新版替代

@EverestJoo
Copy link

使用oss-sdk 3.1.0版本仍然存在问题
3.1.0版本使用的httpclient为4.4.1。
getObject的返回的输入流已关闭

@echokk11
Copy link

2.8.1 同样问题 导致线上线程撑满

@CoffeeSite
Copy link

同样遇到这个问题,发现是流没有关闭造成

@wntp
Copy link

wntp commented Aug 5, 2020

2.8.2 也有这个问题

@liuchsh01
Copy link

其实就是oss调用耗时高了,把连接池占满了。
是服务不稳定造成的,和bug没啥关系。。。

@MrWanglu
Copy link

我是用的sdk2.8.2 也出现了 我看OssClient默认是1024个连接,我们所有getObject的流都关闭了,但是问题还是出现了

@MrWanglu
Copy link

@baiyubin 你好 找了1天 都没找到原因

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants