arthas在docker中排查404问题

  先描述我们项目发布环境

   我们用的是商业K8S,项目发布是用CICD。

1、问题描述

      开发在本机测试接口没问题,发布到docker里却出现404错误。

2、排查过程

     1)检查请求方式,GET还是POST请求。

          结果一致。

     2)检查参数,接口接收是对象,FORM请求。

          结果一致。

     3)检查spring扫描范围(@ComponentScan(basePackages = {"com.ni.qtjk","com.hfkj"}))

          没有发现问题。

     4)排查SVN与开发本地代码

          结果一致。

     5)查检流水线dockerfile

          没有发现问题

     6)进入容器curl   http接口(检查网络转是否存在问题)

          报404错误(说明网络不存在问题)

     纠结,真想不出其它的办法。

     这时想到了线上问题排查神器arthas

     1)进入容器安装arthas

           curl -O https://arthas.aliyun.com/arthas-boot.jar

           java -jar arthas-boot.jar

    2)   反编译代码

         arthas 中sc命令可以进行代码反编译

        输入 sc com.ni(我们服务包名)发现无包名,却看到一个已经被删除的包名

        进入被删除的包名找到其中一个类反编译,发现代码确实是被删除的包下代码,这时问题已经确定,容器里面的jar肯定与SVN不一致,问题必定出现在流水线中。

    3)核对流水线涉及到jar的地方(因为流水线是运维同事创建的)

        发现流水线在制作镜像环节用的jar和pom(我们用的是maven)不一致

       问题点已找到,修改成与pom一致重新执行流水线即问题解决。

 

3、问题复盘

      流水线创建之初是不存在问题的,开发同事后来因为业务划分所以也修改了pom配置,开发同事不了解maven编译原理,所以修改pom后也未通知运维同事就出现了这一现象。花了我半天的时间啊。写此日志以警醒自己。

你可能感兴趣的:(arthas,404线上问题排查)