alibaba / druid

阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
https://github.com/alibaba/druid/wiki
Apache License 2.0
27.9k stars 8.57k forks source link

高并发的情况下,线程池中有空闲连接,但是获取连接会很慢 #3822

Open zggg opened 4 years ago

zggg commented 4 years ago

`"http-nio-8080-exec-381" #559 daemon prio=5 os_prio=0 tid=0x00007f9758018800 nid=0x1bd5 waiting on condition [0x00007f9715012000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method)

zggg commented 4 years ago

"http-nio-8080-exec-381" #559 daemon prio=5 os_prio=0 tid=0x00007f9758018800 nid=0x1bd5 waiting on condition [0x00007f9715012000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000007001d8320> (a java.util.concurrent.locks.ReentrantLock$FairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly(AbstractQueuedSynchronizer.java:897) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1222) at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335) at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1562) at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1395) at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5059) at com.alibaba.druid.filter.FilterAdapter.dataSource_getConnection(FilterAdapter.java:2756) at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5055) at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680) at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5055) at com.alibaba.druid.filter.FilterAdapter.dataSource_getConnection(FilterAdapter.java:2756) at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5055) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1373) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1365) at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:109)

打印线程堆栈,看到很多获取连接的时候在这个地方挂起

localhost845 commented 3 years ago

我也碰到了 有没有解决办法

helanvvi commented 2 years ago

我也遇到这个问题,有没有解决方法呢? 图片

wenshao commented 2 years ago

什么版本?

helanvvi commented 2 years ago

什么版本?

springboot 2.4.7 druid 1.2.8 图片

jmeter 模拟50并发,获取连接、回收连接时都会阻塞一段时间

图片

warriorSL2016 commented 1 year ago

哥哥们,有人解决这个问题吗,我通过trace发现在pollLast()耗时很长,但是看druid监控,连接并没有达到峰值,不知道怎么产生这个问题的 druid

warriorSL2016 commented 1 year ago

我的版本是druid: 1.1.21 mysql-connector-java: 5.1.38