0-1 - 线程池资源枯竭
服务端的线程资源耗尽了。 默认情况下,Dubbo 服务端的业务线程数是 200 个。如果多个并发请求量超过了 200,就会拒绝新的请求,抛出此错误。
可能的原因
- Consumer 的并发请求量太大,导致 Provider 端创建的线程数量超限。
- 可能 Provider 端在执行业务的时候,由于业务调用外部应用接口,导致线程出现阻塞,从而导致线程池回收不了线程。
排查和解决步骤
- 开启 Dubbo 的访问日志功能,排查是否有短时间内大量调用 RPC 服务的情况。
- 通过
jps
和jstack
指令检查线程池中各个线程的状态,看下是否有业务调用外部应用接口造成阻塞。 - 如果是 Consumer 的并发请求量太大,那么调整 Provider 端的
dubbo.provider.threads
参数,将 Dubbo 的线程池的数目调大。 - 如果 Provider 业务的 QPS 实在太大,目前的服务器数目处理不完,那么增加 Provider 端服务器的数量,让更多的服务器分担压力。
这个错误码的 FAQ 页面参考了空冥同学的 《Dubbo 常见错误及解决方法》 。 所引文章通过 CC-BY-4.0 协议赋予了汇编的权利。在此向原作者表示感谢。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 October 19, 2022: Update 1.md (#1562) (d456b4b8f)