arthas诊断windows服务模式运行的Java进程
arthas线上debug非常好用,但是有些场景不能直接使用。如何使用arthas请自行查看官网文档,本文不再赘述!
1.windows服务运行jar包场景
有些情况,我们java项目以windows服务的形式运行在windows服务器上,直接使用java -jar arthas-boot.jar
是看不到运行的java程序的。
比如用winsw
打包的jar包。
2.解决办法
2.1.查询进程的pid
C:\Users\jhd>netstat -ano | find "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 22072
TCP 192.168.5.17:56617 182.50.10.219:8080 ESTABLISHED 15704
TCP 192.168.5.17:61517 125.39.196.158:8080 ESTABLISHED 20064
TCP [::]:8080 [::]:0 LISTENING 22072
根据上述命令查询结果可知 8080 端口的 进程id 是 22072
2.2.将pid带入下列命令
https://arthas.aliyun.com/doc/manual-install.html#windows
使用以下命令诊断 windows 服务模式运行的 Java 进程 (–interact 打开服务 UI 交互模式,方便诊断问题):
as-service.bat -port <port> as-service.bat -pid <pid> as-service.bat -pid <pid> --interact
清理 arthas windows 服务执行以下命令:文章来源:https://uudwc.com/A/GdpOD
as-service.bat -remove
执行 as-service.bat -pid 22072
后就可以正常使用arthas了。文章来源地址https://uudwc.com/A/GdpOD