Blog · Loji44AboutTAGSRSS🔍SEARCH

最近排查一个线上问题,有个第三方公司服务启动后,访问的时候总是报数据库连接失败。由于是第三方服务,没法增加一些日志进行观察,所以使用阿里的arthas在线诊断工具进行排查。服务部署在客户的机房中,不允许连接外部网络,所以手动下载arthas-boot.jar并通过scp方式上传到目标机器的方式去运行。

根据arthas官网安装教程,下载arthas-boot.jar,然后scp上传到目标主机(客户的机器):

$ curl -O https://alibaba.github.io/arthas/arthas-boot.jar
$ scp -rp arthas-boot.jar appweb@192.168.100.4:/appweb/

执行java -jar arthas-boot.jar,运行结果如下图所示:

arthas-run

原来arthas-boot.jar并不是全量包,它会在启动的时候先去阿里Maven仓库下载一些jar包依赖;如果Maven下载失败,那么它会检查本地是否有jar包依赖文件,例如图中的日志:

[ERROR] Can not find Arthas under local: /root/.arthas/lib

所以解决方案可以这样:在我的机器上(可联外网),先运行java -jar arthas-boot.jar下载得到一个.arthars文件夹,里面存放的就是arthas-boot.jar所需的一些jar包依赖。.arthars文件夹会默认在用户主目录下生成。

最后将.arthas文件夹也scp传送到客户的目标机器,即可完成。