亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

dbcp 連接池不合理的鎖導致連接耗盡解決方案

2024-09-05 00:22:48
字體:
來源:轉載
供稿:網友

dbcp 連接池不合理的鎖導致連接耗盡解決方案

應用報錯,表象來看是連接池爆滿了。

org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:241) ~[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE]    at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82) [dubbo-2.5.3.jar:2.5.3]    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_33]    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_33]    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_33]Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool exhausted    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:103) ~[commons-dbcp.jar:1.2.1]    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540) ~[commons-dbcp.jar:1.2.1]    at com.eshore.crmpub.jdbc.datasource.MultiDataSource.getConnection(MultiDataSource.java:74) ~[crmpub-jdbc-1.0.jar:1.0]    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:203) ~[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE]    ... 32 common frames omittedCaused by: java.util.NoSuchElementException: Timeout waiting for idle object    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1174) ~[commons-pool-1.6.jar:1.6]    at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:74) ~[commons-dbcp.jar:1.2.1]    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95) ~[commons-dbcp.jar:1.2.1]    ... 35 common frames omitted

應用堆棧,幾十條線程都阻塞到dbcp池的PoolableConnectionFactory.makeObject方法了,此方法在等待0x0000000709a638a0對象鎖,但0x0000000709a638a0對象一直被其中一條線程執行PoolableConnectionFactory.makeObject時鎖了,而且這條線程獲取到鎖后還阻塞住了,所以導致后面幾十條線程都BLOCKED了。

"DubboServerHandler-132.121.95.136:28101-thread-300" daemon prio=10 tid=0x00007f02b4136800 nid=0x4954 waiting for monitor entry [0x00007f0286018000]  java.lang.Thread.State: BLOCKED (on object monitor)  at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)  - waiting to lock <0x0000000709a638a0> (a org.apache.commons.dbcp.PoolableConnectionFactory)  at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1188)  at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:74)  at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)  at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)  at com.eshore.crmpub.jdbc.datasource.MultiDataSource.getConnection(MultiDataSource.java:74)  at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:203)  at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)  at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:417)  at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:255)  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)  at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)  at com.eshore.crm.service.common.pub.aspect.DataSourceRouteAspect.around(DataSourceRouteAspect.java:74)  at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source)  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  at java.lang.reflect.Method.invoke(Method.java:597)  at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)  at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)  at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)  at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)  at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)  at com.eshore.crm.service.sysmgr.sca.impl.SysMgrServiceImpl$$EnhancerByCGLIB$$bfd71326.qryBulletinList(<generated>)  at com.alibaba.dubbo.common.bytecode.Wrapper101.invokeMethod(Wrapper101.java)  at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)  at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)  at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)  at com.eshore.crmpub.sca.dubbo.filter.BaseFilter.invoke(BaseFilter.java:90)  at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)  at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)  at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)  at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)  at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)  at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  at java.lang.Thread.run(Thread.java:662)  Locked ownable synchronizers:  - <0x000000070a120f00> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
"DubboServerHandler-132.121.95.136:28101-thread-290" daemon prio=10 tid=0x00007f03203da800 nid=0x4948 runnable [0x00007f0286a22000]  java.lang.Thread.State: RUNNABLE  at java.net.SocketInputStream.socketRead0(Native Method)  at java.net.SocketInputStream.read(SocketInputStream.java:129)  at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:112)  at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:159)  at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:187)  - locked <0x0000000715a9ce70> (a com.mysql.jdbc.util.ReadAheadInputStream)  at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3140)  at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:597)  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1085)  at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2494)  at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2527)  at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2309)  - locked <0x00000007159d1898> (a com.mysql.jdbc.JDBC4Connection)  at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)  at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)  at sun.reflect.GeneratedConstructorAccessor78.newInstance(Unknown Source)  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)  at java.lang.reflect.Constructor.newInstance(Constructor.java:513)  at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)  at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:419)  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)  at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)  at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)  - locked <0x0000000709a638a0> (a org.apache.commons.dbcp.PoolableConnectionFactory)  at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1188)  at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:74)  at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)  at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)  at com.eshore.crmpub.jdbc.datasource.MultiDataSource.getConnection(MultiDataSource.java:74)  at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:203)  at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)  at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:417)  at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:255)  at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)  at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)  at com.eshore.crm.service.common.pub.aspect.DataSourceRouteAspect.around(DataSourceRouteAspect.java:74)  at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source)  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  at java.lang.reflect.Method.invoke(Method.java:597)  at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)  at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)  at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)  at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)  at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)  at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)  at com.eshore.crm.service.cachemgr.sca.common.DictCacheServiceImpl$$EnhancerByCGLIB$$e27e8e25.getDict(<generated>)  at com.alibaba.dubbo.common.bytecode.Wrapper93.invokeMethod(Wrapper93.java)  at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)  at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)  at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)  at com.eshore.crmpub.sca.dubbo.filter.BaseFilter.invoke(BaseFilter.java:90)  at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)  at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)  at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170)  at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)  at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82)  at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  at java.lang.Thread.run(Thread.java:662)  Locked ownable synchronizers:  - <0x000000070a0f9218> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

可以看到其實獲取鎖的線程是阻塞在這里了,做mysql握手包的時候一直在等待讀,阻塞在網絡IO了。

 java.lang.Thread.State: RUNNABLE  at java.net.SocketInputStream.socketRead0(Native Method)  at java.net.SocketInputStream.read(SocketInputStream.java:129)  at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:112)  at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:159)  at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:187)  - locked <0x0000000715a9ce70> (a com.mysql.jdbc.util.ReadAheadInputStream)  at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3140)  at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:597)  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1085)  at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2494)  at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2527)  at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2309)

這個是dbcp1.x版本在創建新的連接對象時會把整個連接工廠類對象鎖了,一旦創建過程中發生阻塞就會導致整個池都死掉。這個問題很大。

解決方案,升級dbcp2.x版本或tomcat jdbc或druid連接池,推薦druid連接池,功能強大自帶監控。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人成人开心激情综合网| 中文字幕欧美视频在线| 久久久av电影| 久久亚洲国产精品成人av秋霞| 国产精品jvid在线观看蜜臀| 国产精品久久久久久久电影| 欧美最猛性xxxxx(亚洲精品)| 亚洲精品午夜精品| 夜夜嗨av色综合久久久综合网| 国产精品私拍pans大尺度在线| 国产做受69高潮| 欧美性xxxx在线播放| 国产一区二区三区在线播放免费观看| 亚洲人成五月天| 日韩av在线不卡| 欧美激情视频在线免费观看 欧美视频免费一| 日韩人体视频一二区| 最近中文字幕mv在线一区二区三区四区| 亚洲视频自拍偷拍| 久热在线中文字幕色999舞| 在线观看成人黄色| 91九色国产在线| 国产成人精品免高潮费视频| 欧洲日本亚洲国产区| 国语自产精品视频在线看抢先版图片| 91夜夜揉人人捏人人添红杏| 欧美高清在线视频观看不卡| 亚洲男人天堂手机在线| 亚洲精品97久久| 91九色国产社区在线观看| 国产视频精品在线| 亚洲国产精品va在线看黑人动漫| 欧美激情久久久| 午夜美女久久久久爽久久| 国产九九精品视频| 久久97久久97精品免视看| 亚洲成人三级在线| 精品久久久久久久中文字幕| 热re91久久精品国99热蜜臀| 亚洲男人7777| 午夜精品久久久久久久99黑人| 欧美大片免费观看在线观看网站推荐| 中国人与牲禽动交精品| 久久综合国产精品台湾中文娱乐网| 亚洲黄页视频免费观看| 萌白酱国产一区二区| 一区二区三区黄色| 久久久久久这里只有精品| 久久影院免费观看| 欧美激情一级欧美精品| 欧美日韩亚洲视频| 国产视频精品xxxx| 亚洲欧美在线第一页| 精品日本高清在线播放| 在线激情影院一区| 午夜精品久久久久久99热| 亚洲第一页中文字幕| 国产精品91久久久久久| 久久成人av网站| 久久久91精品国产一区不卡| 亚洲成人av在线| 欧美人在线视频| 久久精品电影一区二区| 91精品国产综合久久久久久蜜臀| 亚洲的天堂在线中文字幕| 精品综合久久久久久97| 久久视频在线观看免费| 色偷偷88888欧美精品久久久| 亚洲色在线视频| 欧美福利在线观看| 亚洲欧美综合v| 国产精品男人爽免费视频1| 亚洲第一国产精品| 黑丝美女久久久| 亚洲女性裸体视频| 日韩欧美精品在线观看| 国产精品日韩av| 日韩av在线免费观看| 成人激情电影一区二区| 97精品在线视频| 亚洲第一精品福利| 日本欧美中文字幕| 热久久视久久精品18亚洲精品| 亚洲资源在线看| 精品成人乱色一区二区| 欧美人与性动交a欧美精品| 91系列在线播放| 欧美最猛性xxxxx免费| 在线视频亚洲欧美| 色综合久久精品亚洲国产| 亚洲最大的av网站| 中文字幕视频在线免费欧美日韩综合在线看| 国产成人精品免费久久久久| 久久亚洲私人国产精品va| 亚洲成人激情在线| 亚州国产精品久久久| 91久久久国产精品| 国产日韩综合一区二区性色av| 亚洲一二在线观看| 久久91亚洲精品中文字幕| 欧美极品少妇xxxxⅹ裸体艺术| 一区三区二区视频| 中文字幕久久久| 亚洲韩国日本中文字幕| 久久久99免费视频| 午夜精品在线视频| 久久精品国产亚洲精品| 一本色道久久综合狠狠躁篇怎么玩| 成人黄色午夜影院| x99av成人免费| 欧美亚洲另类制服自拍| 91最新国产视频| 亚洲欧美国产精品专区久久| 亚洲欧美中文日韩在线| 亚洲精品av在线| 日韩精品福利网站| 国产专区欧美专区| 亚洲高清不卡av| 久久久在线免费观看| 日韩精品小视频| 欧美一级视频一区二区| 日本高清不卡在线| 欧美性xxxx| 精品久久久久久中文字幕| 国产欧美日韩丝袜精品一区| yellow中文字幕久久| 亚洲在线第一页| 色偷偷偷综合中文字幕;dd| 亚洲国产天堂久久综合| 成人伊人精品色xxxx视频| 91久久中文字幕| 伦理中文字幕亚洲| 亚洲激情自拍图| 欧美性高潮在线| 欧美一级在线播放| 国产精品久久久精品| 成人字幕网zmw| 欧美极品少妇xxxxx| 欧美电影在线观看高清| 国产99久久精品一区二区永久免费| 国产成人久久久| 久久黄色av网站| 欧美日韩成人在线观看| 亚洲**2019国产| 久久久精品影院| 欧美专区在线视频| 在线日韩第一页| 日本不卡视频在线播放| 国产精品爱久久久久久久| 国产精品丝袜白浆摸在线| 久久久久亚洲精品成人网小说| 欧美丰满少妇xxxxx| 亚洲欧美在线第一页| 国产91在线播放精品91| 一区二区三区日韩在线| 欧美日韩国产成人在线观看| 亚洲国产成人精品久久久国产成人一区| 亚洲成人在线网| 色妞久久福利网| 欧美激情视频在线| 日韩免费观看高清| 久久久免费精品视频| 精品综合久久久久久97| 久久综合久久88|