dubbo报错总结

作为一个dubbo使用新手,有必要总结一些常见的dubbo问题,提升解决问题的套路。


1.dubbo consumer 调用provider报错(1)- No provider available

问题:No provider available from registry xxx from service xxx on consumer xxx may be providers disabled or not registrered。如下图所示:
dubbo报错
原因
根据源码的截图所示(下图),就两个原因:
1)No service provider
2)Service providers are disabled
源码分析
解决办法
1).provider部署分支不正确,部署正确的分支。
2).consumer部署分支的zookeeper地址不正确。


2.dubbo consumer调用provider报错(2)

问题:com.alibaba.dubbo.rpc.RpcException: Rpc cluster invoker for interface xxx on consumer 10.2.4.63 use dubbo version 2.6.0.2 is now destroyed! Can not invoke any more.
问题截图
原因
源码分析
调用链路:invoke()–>checkWhetherDestroyed()
consumer端调用的时候,发现出现实例已经destory,就抛出此异常
怀疑是由于内存不足,dubbo进程触发了spring的destroy()方法,同时就执行到了AbstractClusterInvoker.destroy(),但是此时进程并没有挂掉,所以就出现了可以调用,但是调用失败的情况。

解决方法
1)查看provider服务器是否内存不够,kill掉不相干的进程。
2)重启provider服务。


3.dubbo consumer 调用provider报错(3)- NoSuchMethodException

问题:Caused by: com.alibaba.dubbo.common.bytecode.NoSuchMethodException: Not found method “getSocialResourceByRegionId” in class com.missfresh.product.center.service.impl.SocialResourceServiceImpl.
问题截图
原因
dubbo服务部署的分支里没有相关接口的实现。
解决方法
部署对应的分支。或者是直接部署master。


4.dubbo consumer 调用provider报错(4)- Thread pool is EXHAUSTED!

问题:com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method queryProductSalsPromotionTagList in the service com.missfresh.product.center.service.IProductCategorysService. Tried 1 times of the providers
问题截图
原因:
原因分析
如上图所示,provider服务支持的最大线程数为300。

解决方法
检查程序中并发采用的线程池初始化值,是否合理。最大线程个数不能大于300.

你可能感兴趣的:(java,dubbo,java-zookeeper,zookeeper,intellij-idea,tcp/ip)