dubbo 服务注册成功后出现 Failed to invoke the method * in the *

记录一下实际开发中出现的问题

问题描述

真实环境中需要部署新功能,需要重启之前的项目,但在重启过程中发现大量的端口处于 time wait ,导致端口被占用,项目启动失败。重新修改端口后启动成功并注册成功,但出现了 Failed to invoke the method * in the *

环境

  • java: 8
  • dubbo: 2.7.1
  • nacos: docker 中最新版本

日志如下:

org.apache.dubbo.rpc.RpcException: Failed to invoke the method all in the service managercenter.service.IDevTargetMService.
Tried 3 times of the providers [192.168.0.138:21882] (1/1) 
from the registry 127.0.0.1:8848 on the consumer 192.168.0.138
using the dubbo version 2.7.1. Last error is: Failed to invoke
remote method: all, provider: dubbo://192.168.0.138:21882/managercenter.service.IDevTargetMService?anyhost=true&application=all&bean.name=providers:dubbo:managercenter.service.IDevTargetMService&category=providers&check=false&default.check=false&default.deprecated=false&default.dynamic=false&default.generic=false&default.lazy=false&default.reference.filter=consumerHttpContextFilter&default.register=true&default.service.filter=providerHttpContextFilter&default.sticky=false&default.timeout=3000000&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&interface=managercenter.service.IDevTargetMService&lazy=false&methods=findDevTarget,findByIdNullable,save,deleteUpdate,update,insert,findCopyToObjects,delete,insertOrUpdate,download,find,findById,setConfiguration,findDevTargets,all,findPagedList,findCopyToDatas,saveCopyDatas,devImport,checkDataIsExist,findDevInvalidTargets,findPeriodType,findByIdNonNull,findPaseTargets,deleteById,queryDirectory,deletePermanent,insertOrUpdateByIdIsNull&path=managercenter.service.IDevTargetMService&pid=42184&protocol=dubbo&qos.accept.foreign.ip=false&qos.enable=false&register=true&register.ip=192.168.0.138&release=2.7.1&remote.application=all&remote.timestamp=1662691258034&revision=1.0.1&side=consumer&sticky=false&timestamp=1662691217628, cause: message can not send, because channel is closed . url:dubbo://192.168.0.138:21882/control.service.IEntityDataCService?anyhost=true&application=all&bean.name=providers:dubbo:control.service.IEntityDataCService&category=providers&check=false&codec=dubbo&default.check=false&default.deprecated=false&default.dynamic=false&default.generic=false&default.lazy=false&default.reference.filter=consumerHttpContextFilter&default.register=true&default.service.filter=providerHttpContextFilter&default.sticky=false&default.timeout=3000000&deprecated=false&dubbo=2.0.2&dynamic=false&generic=false&heartbeat=60000&interface=control.service.IEntityDataCService&lazy=false&methods=all,findByIdNullable,deleteAll,save,updateAll,update,insert,findByInIds,delete,insertOrUpdate,find,findByIdNonNull,findById,deleteById,deletePermanent,insertAll,insertOrUpdateByIdIsNull,batchDeleteAll&path=control.service.IEntityDataCService&pid=42184&protocol=dubbo&qos.accept.foreign.ip=false&qos.enable=false&register=true&register.ip=192.168.0.138&release=2.7.1&remote.application=all&remote.timestamp=1662690025452&revision=1.0.1&side=consumer&sticky=false&timestamp=1662691214667
        at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:111) ~[dubbo-2.7.1.jar:2.7.1]
        at org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:242) ~[dubbo-2.7.1.jar:2.7.1]
        at org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:76) ~[dubbo-2.7.1.jar:2.7.1]
        at org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:57) ~[dubbo-2.7.1.jar:2.7.1]
        at org.apache.dubbo.common.bytecode.proxy19.all(proxy19.java) ~[dubbo-2.7.1.jar:2.7.1]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_272]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_272]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_272]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_272]
        at org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor$ReferenceBeanInvocationHandler.invoke(ReferenceAnnotationBeanPostProcessor.java:165) ~[dubbo-2.7.1.jar:2.7.1]
        at com.sun.proxy.$Proxy190.all(Unknown Source) ~[?:?]
        at warning.scheduler.DevTargetInfoSchedule.run(DevTargetInfoSchedule.java:47) [grape-component-warning-sharding-1.0.1.jar:1.0.1]
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:783) [spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
        at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:773) [spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.0.9.RELEASE.jar:2.0.9.RELEASE]
        at org.grape.GrapeApplication.initSpring(GrapeApplication.java:138) [grape-container-1.1.3.jar:1.1.3]
        at org.grape.GrapeApplication.main(GrapeApplication.java:83) [grape-container-1.1.3.jar:1.1.3]

排查思路

1、确认 dubbo 服务是否注册成功,通过 host:8848/nacos 页面中确认了服务已经注册。
在这里插入图片描述

2、并测试其中的服务是否正常(自行搜索一下dubbo 服务测试),唯独 IDevTargetMService 无法调用成功。

3、( 问题解决 ) 根据问题描述中 出现大量 time wait, 猜想之前的服务并是否没有被成功 kill 掉,所以导致服务一直调用到之前未启动成功的项目中?通过排查 Java 进程,查询出有许多重复的项目未被关闭。如下(只是模拟一下场景,排查过程中出现了 3 - 6 重复的项目)。kill 重复项目后,服务正常
在这里插入图片描述

查看 java 进程脚本(JDK8,openJDK 缺少命令没法使用)

file=$(jps |awk '{print $1}');
num=1;

for v in $file
do
  fielname[$num]=$v;
  echo " $num : $v "
  num=`expr $num + 1`
done

select=-1;

while :
do
if read -t 60  -p "Enter the program to java the project,Y withdraw from :"  #limited time 5s
    then
        case $REPLY in
            Y|y)
              RECOVERY_Recovery=1;
              echo -e "\n Update  Recovery\n"
              break
              ;;
            R|r)
              num=1;
              echo -e "\n";
              for v in $(jps |awk '{print $1}')
                do
                  fielname[$num]=$v;
                  echo " $num : $v "
                  num=`expr $num + 1`
                done
              continue
              ;;
            *)
              select=$REPLY
              cd /proc/${fielname[$REPLY]}
              ls -l  | sed -n "11, 1p" | awk '{print $11}'

              while :
                do
                if read -t 60 -n 1 -p "Enter the program to kill the project,Y withdraw from :"  #limited time 5s
                    then
                        case $REPLY in
                            Y|y)
                              RECOVERY_Recovery=1;
                              echo -e "\n kill  start\n"
                              kill -9 ${fielname[$select]}
                              break
                              ;;
                            *)
                              break
                        esac
                else
                              RECOVERY_Recovery=0;
                              echo -e "\n Not kill\n"
                              break
                fi
                done

              continue
        esac
else
                RECOVERY_Recovery=0;
                echo -e "\n Not java cmd \n"
                break
fi
done
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是由于在调用com.gxa.nj.service.UserCardService的getById方法时出现了问题。根据引用\[1\]中提到的错误信息,可能是序列化或者IP的问题。你已经确认实体类已经实现了序列化,并且IP也没有问题。根据引用\[2\]和引用\[3\]中提到的错误信息,还可能是数据库连接的问题。可能是由于通信链路故障导致的。建议你检查一下数据库连接是否正常,确保数据库服务器能够正常访问。另外,你还可以尝试重启应用程序和数据库服务器,看看是否能够解决这个问题。如果问题仍然存在,建议你查看相关日志文件,以获取更多的错误信息,以便更好地定位和解决问题。 #### 引用[.reference_title] - *1* [**com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method findGoodsById in the service](https://blog.csdn.net/HiFighting/article/details/103864728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method list in the service com.dream.servic](https://blog.csdn.net/Astudies/article/details/105053109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值