最近生产环境出现一个问题,通过排查日志发现Dubbo线程池满了,报错信息如下:
RejectedExecutionException:Thread pool is EXHAUSTED ! Thread Name: DubboServerHandler-xx.xx.xxx:2201, Pool Size: 300 (active: 283, core: 300, max: 300, largest: 300)
Dubbo默认的线程池大小是200,但是如果代码写的有问题,比如while(true)一直循环,导致cpu100%,或者是频繁请求,并发请求高,都可能导致这个问题
所以,针对这种情况,有一些优化建议:
dubbo.protocol.threads=5000
dubbo.protocol.threadpool=cached
dubbo.protocol.dispatcher=message