• 记一次Dubbo服务注册异常


            公司项目重构,把dubbo版本从2.5.8升级为2.6.2。升级后在本地运行一点问题都没有;可是通过公司自研的发布系统将项目发布到测试环境的linux服务器下面后,出现了dubbo服务未注册的现象。刚出现这问题,大家都一脸懵逼,毕竟在本地跑起来非常顺畅。但问题总是要解决的,不可能因为dubbo服务注册异常就不升级dubbo版本。因此记录下这个问题是怎么解决的,便于后续查阅。

    一、问题描述

        dubbo版本从2.5.8升级到2.6.2后,在linux服务器上运行项目。查询dubbo监控中心,发现一个dubbo服务都没注册成功;并且项目启动过程中没有报错。在windows本地运行项目则不会有任何问题,服务都注册上了。
     

    二、解决过程

    (1)dump jvm线程栈
            因为是在linux服务器上出现了问题,因此我们需要dump jvm 线程栈
    • 先查询出我们运行的项目的进程id
      • ps -ef | grep 项目名
    • dump 线程栈信息
      • jstack 进程id > zxy_thred_dump.txt
     
    (2)分析dump文件
        分析dump文件,发现了异常的线程。信息如下图所示
     
        发现异常出现在dubbo包下的 NetUtils.getLocalAddress0()这个方法上面
     
    (3)在网络上查询这个异常信息,得到如下结果
            ip解析异常导致dubbo服务注册异常
            
     
    (4)查看服务器上hostname和ip绑定情况
            查看hostname命令: hostname
            查看hostname绑定的ip的命令: hostname -i
                
                    查看hosts文件:cat /etc/hosts
                
                
                发现果然是hosts的问题,hostname kxlsv178;但hosts里面iphostname绑定没有绑定。

     

    三、解决方案

    直接修改hosts文件,添加hostnameip

    vim /etc/hosts

     

    四、参考链接

    (1)https://www.cnblogs.com/leo-li-3046/p/5702479.html

    (2)https://www.cnblogs.com/jizhao/p/4081675.html

    (3)https://blog.csdn.net/qianghaohao/article/details/80379118

    (4)https://blog.csdn.net/perfect5085/article/details/7283067

     

     

     
     
     
     
  • 相关阅读:
    mysql批量导入删除
    sql查重去除id最小值
    Rest构建分布式 SpringCloud微服务架构项目
    Django模板语言及视图
    Django模板语言
    面向对象进阶
    初识面向对象
    os模块和sys模块
    random模
    时间模块
  • 原文地址:https://www.cnblogs.com/zeng1994/p/3942f72e4f26ab68b559102ecde11e4a.html
Copyright © 2020-2023  润新知