报错:
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" />
<p>公司总监找到了原因,写了一个 socket客户端和服务端保持长连接,发现机房局域网络抖动不定时断开连接,可能是防火墙对于不活跃的连接半小时强制断开,而druid数据库连接池并不知道连接已经断开,当访问数据库的时候getDB()出现阻塞。严重影响业务处理耗时,造成dubbo线程池满。解决办法:druid 数据源配置 增加 :</p>
<property name = "keepAlive" value = "true"/>
数据库连接保持活跃,这样可以使防火墙不会主动断开连接。
是不是要配负载均衡?
回复 <a class="referer" target="_blank">@颖辉小居</a> : 可以参考一下官网的例子。 http://dubbo.apache.org/zh-cn/docs/user/demos/loadbalance.html
回复 <a class="referer" target="_blank">@爱新觉罗玄楠</a> : 是消费者配置的负载机制吧,是使用默认的轮询
loadbalance参数配了吗?
负载方式就是默认的轮训
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。