【紧急】有四台dubbo服务,支持http和dubbo协议,完成相同的功能最近总是出现线程池满的问题,请问怎么回事?

颖辉小居 发布于 06/01 15:46
阅读 251
收藏 0

报错:

java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED!

四台服务轮流报错,导致很多请求不能处理。我比较好奇一台服务线程池满了,不会自动转发到其他服务吗?

现在的配置:

	<dubbo:protocol port="27777" accesslog="true" /><!-- DUBBO服务发布端口 -->

	<dubbo:protocol name="rest"  port="8080"  contextpath="setapp" server="servlet" accesslog="true" />

 

以下是问题补充:

@颖辉小居:Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-XX.XX.XX.XX:XXXX, Pool Size: 200 (active: 200, core: 200, max: 200, largest: 200) (06/12 15:37)
加载中
0
颖辉小居
颖辉小居

公司总监找到了原因,写了一个 socket客户端和服务端保持长连接,发现机房局域网络抖动不定时断开连接,可能是防火墙对于不活跃的连接半小时强制断开,而druid数据库连接池并不知道连接已经断开,当访问数据库的时候getDB()出现阻塞。严重影响业务处理耗时,造成dubbo线程池满。解决办法:druid 数据源配置 增加 :

<property name = "keepAlive" value = "true"/>

数据库连接保持活跃,这样可以使防火墙不会主动断开连接。

0
爱新觉罗玄楠
爱新觉罗玄楠
是不是要配负载均衡?
爱新觉罗玄楠
爱新觉罗玄楠
回复 @颖辉小居 : 可以参考一下官网的例子。 http://dubbo.apache.org/zh-cn/docs/user/demos/loadbalance.html
颖辉小居
颖辉小居
回复 @爱新觉罗玄楠 : 是消费者配置的负载机制吧,是使用默认的轮询
爱新觉罗玄楠
爱新觉罗玄楠
loadbalance参数配了吗?
颖辉小居
颖辉小居
负载方式就是默认的轮训
返回顶部
顶部