记一次线上问题排查-类加载出问题

问题发生

记一次线上问题排查-类加载出问题_第1张图片

找不到的这个方法,这一期我们改过方法入参,所以如果还是用之前的版本的jar的包的话,肯定会报错

解决

第一反应是这个项目类加载有问题,先看下服务提供方,通过dubbo admin


提供者这个方法是存在的,并且方法总数和当前版本一致,排除问题

那么就让运维下载这个jar包来看

记一次线上问题排查-类加载出问题_第2张图片

解压查看那个接口所在jar包

记一次线上问题排查-类加载出问题_第3张图片

我勒个去

这个时间不就是上次发布的时间

开始怀疑运维用上次的jar包发布,让运维先重新发布了一次,但是错误依然,让运维给脚本以及新的jar包

记一次线上问题排查-类加载出问题_第4张图片

抱歉脚本内容太复杂了,很费时间,不看了

运维给我jar包里面解压出来是对的。

但是还是有问题啊,同样的错,感觉运维还是用老版本的jar包发布。

感觉不能太依赖运维了,直接询问能不能吧线上权限申请下来,我要自己干了

记一次线上问题排查-类加载出问题_第5张图片
记一次线上问题排查-类加载出问题_第6张图片

有了线上权限,直接arthas搞起来

使用sm命令当前jvm运行的这个类


记一次线上问题排查-类加载出问题_第7张图片
image.png

果然。加载的不对。只有4个方法。最新版有8个方法。

记一次线上问题排查-类加载出问题_第8张图片

那么就用正确的jar包手动发布吧

发布完成后,再用arthas看下


记一次线上问题排查-类加载出问题_第9张图片

8个方法,正确了。

原因

原因是我这个项目是我们公司第一个jar包启动的项目,运维单独写了脚本发布,但是这个脚本存在质量问题。

再感叹下,我们公司不让jar包启动,就算是sb项目,也要用war包兼容方式,放tomcat启动,尴尬。

当然说不是一定要jar包启动,能支撑业务都ok,但是包容性真的太差了。

自己能干的时候自己干吧

最后附上arthas文档,排查问题神器
https://alibaba.github.io/arthas/install-detail.html

你可能感兴趣的:(记一次线上问题排查-类加载出问题)