dubbo线程池中无可用线程
這兩天dubbo出現突然掛掉的現象。異常如下:
?[DUBBO] Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-192.168.2.187:20880, Pool Size: 200 (active: 200, core: 200, max: 200, largest: 200), Task: 6294 (completed: 6094), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://192.168.2.187:20880!, dubbo version: 2.5.3, current host: 192.168.2.187
然后使用jstack ‘pid’>xxx.log查看日志:
DubboServerHandler-192.168.2.187:20880-thread-192" #232 daemon prio=5 os_prio=0 tid=0x00007fe844056000 nid=0x12e3 waiting for monitor entry [0x00007fe825958000]
? ?java.lang.Thread.State: BLOCKED (on object monitor)
at org.springframework.jms.connection.SingleConnectionFactory.getConnection(SingleConnectionFactory.java:281)
- waiting to lock <0x00000000fd9b9bc0> (a java.lang.Object)
at org.springframework.jms.connection.SingleConnectionFactory.createConnection(SingleConnectionFactory.java:224)
at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:180)
at org.springframework.jms.core.JmsTemplate.access$600(JmsTemplate.java:90)
at org.springframework.jms.core.JmsTemplate$JmsTemplateResourceFactory.createConnection(JmsTemplate.java:1177)
at org.springframework.jms.connection.ConnectionFactoryUtils.doGetTransactionalSession(ConnectionFactoryUtils.java:312)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:471)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:559)
at com.hginfo.hbm.be.service.impl.nb.jms.NbJmsServiceImpl.sendPerformanceMessage(NbJmsServiceImpl.java:73)
at com.hginfo.hbm.be.service.impl.nb.jms.NbJmsServiceImpl.sendMessage(NbJmsServiceImpl.java:56)
at com.hginfo.hbm.be.service.impl.nb.jms.NbJmsServiceImpl$$FastClassBySpringCGLIB$$78ff2af8.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:280)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at com.hginfo.hbm.be.service.impl.nb.jms.NbJmsServiceImpl$$EnhancerBySpringCGLIB$$869e41d8.sendMessage(<generated>)
at com.hginfo.hbm.be.service.impl.nb.NbMQServiceImpl.doDcCommonReport(NbMQServiceImpl.java:479)
at com.hginfo.hbm.be.service.impl.nb.NbMQServiceImpl.saveDeviceReport(NbMQServiceImpl.java:79)
at com.hginfo.hbm.be.service.impl.nb.NbMQServiceImpl$$FastClassBySpringCGLIB$$98ff479c.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
重點:java.lang.Thread.State: BLOCKED (on object monitor)
dubbo的線程被activemq連接的線程所阻塞。
發現問題出在activemq上,amq作為輕量級中間件,cpu很少耗盡,推測為amq配置問題,增加內存:set?ACTIVEMQ_OPTS=-Xms1G-Xmx1G。
問題解決,bubbo不再掛掉。
總結
以上是生活随笔為你收集整理的dubbo线程池中无可用线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NetCore 依赖注入之服务之间的依赖
- 下一篇: java中io流是类吗_Java中的IO