通过arthas vmtool 调用线上正在运行的service方法

简介: 通过arthas vmtool 调用线上正在运行的service方法

通过arthas vmtool 调用线上正在运行的service方法

场景

场景 具体描述
业务上有某个缓存需要删除,但是没有写删除 key 的远程接口 通过arthas执行 service 方法,删除缓存 key

1.前期准备

1.1下载arthas

官网地址

https://arthas.gitee.io/doc/quick-start.html

下载运行

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

image-20231030140415201

1.2 idea安装arthas插件

image-20231030140525882

1.3 写一个普通sum方法

image-20231030140646776

启动这个应用

image-20231030140739533

1.4 启动arthas并attach上helloworld进程

image-20231030141055423

选择1

image-20231030141132535

2. 实际操作

例如我们需要远程调用下这个sum方法,但是controller没用写调用sum方法接口,重新发版有风险且太慢了,于是可以利用arthas直接远程调用sum

image-20231030141624474

上面我们已经启动了arthas且attach上了helloworld进程

2.1 获取UserService的classLoaderHash

此时需要先获取UserService的classLoaderHash 用于后续我们指定访问这个方法

sc -d com.example.helloworld.service.UserService

image-20231030142131239

classLoaderHash 18b4aac2

2.2 通过idea arthas插件获取执行方法的命令

image-20231030142310922

image-20231030142452384

复制出来是这个样子

vmtool -x 3 --action getInstances --className com.example.helloworld.service.UserService --express 'instances[0].sum(new com.example.helloworld.controller.User())' -c 18b4aac2

参数解释

-x 3返回参数展开形式的,默认1,设置3,方便观察返回结果

-c xxx指定classLoaderHash

2.3 完善下,加上传递参数,例如传递年龄为3

vmtool -x 3 --action getInstances --className com.example.helloworld.service.UserService --express 'instances[0].sum(new com.example.helloworld.controller.User("zhangsan",3))' -c 18b4aac2

image-20231030143002222

image-20231030143039793

目录
相关文章
|
1月前
|
运维 Java Shell
Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包
Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包
32 0
|
12月前
|
监控 关系型数据库 MySQL
Docker 容器启动失败日志分析方法,启动sonic容器实例simple时未报错运行一会又停止的问题排查实例演示
Docker 容器启动失败日志分析方法,启动sonic容器实例simple时未报错运行一会又停止的问题排查实例演示
433 0
Docker 容器启动失败日志分析方法,启动sonic容器实例simple时未报错运行一会又停止的问题排查实例演示
|
Java Windows
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
2197 0
SpringBoot:Windows平台下JAR包的启动,停止和日志分割脚本
|
2月前
|
测试技术 Go 开发者
ChaosBlade调试问题之在本地以debug模式启动如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
|
4月前
|
运维 监控
JPOM - Agent启动流程&交互源码解析
JPOM - Agent启动流程&交互源码解析
53 0
|
6月前
|
Dubbo 应用服务中间件 API
启动dubbo消费端过程提示No provider available for the service的问题定位与解决
启动dubbo消费端过程提示No provider available for the service的问题定位与解决
53 0
harmonyOS:Service本地启动和停止的演示
为了更好的搞懂Service Ability,光看文档是没有用的,还得实操,在创建好Service ,我们就启动,来做演示,设定的代码是每启动一次,对应的值就加一
harmonyOS:Service本地启动和停止的演示
harmonyOS:Service远程设备启动和停止的演示
紧接着上篇,这次来实现远程设备的Service启动和关闭,打开两个远程设备,写好代码后,开始实操 1.先在第一个设备运行程序,然后选择始终允许
harmonyOS:Service远程设备启动和停止的演示
|
缓存 监控 iOS开发
App启动速度监控-方法级别启动耗时检查工具
本文是基于戴铭大佬的课程iOS开发高手课,加上个人实践+理解编写 本文已同步至掘金:App启动速度监控-方法级别启动耗时检查工具
App启动速度监控-方法级别启动耗时检查工具
|
域名解析 网络协议 关系型数据库
无需修改代码,用 fcapp.run 运行你的 REST 应用
解锁客户不修改代码部署存量REST、网页应用场景,解决客户函数调用返回404问题,支持标准的网关产品与开源组件集成函数计算。
无需修改代码,用 fcapp.run 运行你的 REST 应用