[apache/dubbo]dubbo2.7.x线程池大小配置问题

2023-12-12 833 views
0

线程池配置信息: dubbo.protocol.name=dubbo dubbo.protocol.dispatcher=message threadpool=limited dubbo.protocol.threads=1200

RPC调用耗时异常日志信息: image 配置了1200的线程大小,为什么日志显示最大的线程池只有100。

回答

7

我这边测试的是没问题的,检查下是不是还有别的地方配置了线程池大小

6

你指的别的地方设置了是指的是代码里设置的线程池大小吗,还是说怀疑有别的地方通过配置配置了dubbo的线程池,

4

服务日志能查看到目前dubbo配置的线程池大小是多少吗,怎么看的

4

有别的地方通过配置配置了dubbo的线程池

4

2.7.4.1 估计没有很直观的日志可以检查到

6

@AlbumenJ 那dubbo3.0.9版本的怎么查看,我看日志里也看不到现在是多少大小的线程池

8

直接 jstack 看即可,线程池的策略是先扩容到最大的,有一定请求量以后看总线程会稳定下来的

6

我是3.1.11也遇到了这个问题 org.apache.dubbo.rpc.RpcException: Failed to invoke the method getUserByUserId in the service com.moree.usrcenter.facade.service.UcUserFacadeV2. Tried 1 times of the providers [10.244.6.42:20902] (1/2) from the registry nacos-master:8848 on the consumer 10.244.21.191 using the dubbo version 3.1.1. Last error is: Failed to invoke remote method: getUserByUserId, provider: DefaultServiceInstance{serviceName='moree-usrcenter-provider', host='10.244.6.42', port=20902, enabled=true, healthy=true, metadata={dubbo.metadata-service.url-params={"connections":"1","version":"1.0.0","dubbo":"2.0.2","release":"3.1.1","side":"provider","port":"20902","protocol":"dubbo"}, dubbo.endpoints=[{"port":20902,"protocol":"dubbo"}], dubbo.metadata.revision=7749d5159f9dee39348f07dc128cb26a, dubbo.metadata.storage-type=local, timestamp=1692276012519}}, cause: org.apache.dubbo.remoting.RemotingException: Server side(10.244.6.42,20902) thread pool is exhausted, detail msg:Thread pool is EXHAUSTED! Thread Name: dubbo-protocol-20902, Pool Size: 100 (active: 100, core: 2, max: 100, largest: 100), Task: 1862 (completed: 1762), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://10.244.6.42:20902!

看起来 org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter#buildServiceConfig 这个方法中写死了

image 我看了3.2.0里面没有这个问题了,先扩容一下机器,回头升级3.2.0.