首页 > 其他分享 >通过arthas vmtool 调用线上正在运行的service方法

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

时间:2023-12-22 16:32:54浏览次数:37  
标签:vmtool service -- sum helloworld arthas com

通过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

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

1.2 idea安装arthas插件

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

1.3 写一个普通sum方法

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

启动这个应用

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

1.4 启动arthas并attach上helloworld进程

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

选择1

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

2. 实际操作

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

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

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

2.1 获取UserService的classLoaderHash

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

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

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

classLoaderHash 18b4aac2

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

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

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

复制出来是这个样子

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

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

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

标签:vmtool,service,--,sum,helloworld,arthas,com
From: https://blog.51cto.com/u_16337916/8936629

相关文章

  • SDP(SERVICE DISCOVERY PROTOCOL)
    SDP是基于C/S架构的,即客户端可以发送请求来获取服务端的信息客户端和服务端不是固定的,一个设备既可以做客户端也可以做服务端,即谁发出请求谁做客户端,谁发出响应谁就做服务端。 服务记录: 每个profile都会提供一个服务记录,即通过sdp就能发现该profile所支持的一些信息......
  • windows server 2008 安装vmtool就重启
    ​ 找了很多方法应该只能换源这个方法最靠谱了WindowsServer2008安装流程和VMwareTools安装问题_本程序需要您将此虚拟机安装的更新到sp2_小天要回去的博客-CSDN博客链接在这里目前网络渗透准备从0开始学我推荐开这个视频【CRACER全网最新渗透课程(已获得授权)】DAY01......
  • k8s~ingress_service_endpoint_pod四壮士
    在Kubernetes中,Service和Endpoints是两个重要的概念,它们之间存在着密切的关系。Service:Service是Kubernetes中用于定义一组Pod的访问方式的抽象。通过创建Service,可以为一组具有相同标签的Pod提供统一的访问入口,使得客户端可以通过Service来访问这些Pod,而无需了解其具体的IP地......
  • 深入 K8s 网络原理(二)- Service iptables 模式分析
    目录1.概述2.准备Service和Pods资源3.K8s里Service的实现原理3.1kube-proxy组件3.2iptables简介3.3iptables规则3.3.1Service,Pod和Host信息3.3.2从NodePort入手寻找iptables规则3.3.3从PREROUTING和OUTPUT链寻找K8s相关子链3.3.4总结下4.总结1......
  • 使用 Amazon Fault Injection Service 演示多区域和多可用区应用程序弹性
    文章作者:JeffAmazonFaultInjectionService(FIS)可帮助您将混沌工程大规模付诸实践。今天,我们推出了新的场景,这些场景可以让您演示在亚马逊云科技可用区完全断电,或从一个亚马逊云科技区域到另一个亚马逊云科技区域的连接中断时,您的应用程序是否按预期运行。亚马逊云科技开发者社......
  • 使用WinSW将jar创建成Windows服务;使用Microsoft.Extensions.Hosting.WindowsServices
    【背景】我们有几个历史产品,需要部署在Windows系统上,产品有jar包,也有.net工程,为了优美的启动服务,思考了两种处理方式。第一种是电脑开机启动,将启动命令设置为快捷键,并将快捷键拷贝到C:\ProgramData\Microsoft\Windows\StartMenu\Programs\Startup目录下,该方式有个缺点,由于ja......
  • Databend 源码阅读: Meta-service 数据结构
    作者:张炎泼(XP)DatabendLabs成员,Databend分布式研发负责人https://github.com/drmingdrmer引言Databend是一款开源的云原生数据库,采用Rust语言开发,专为云原生数据仓库的需求而设计。面向云架构:Databend是完全面向云架构的数据库,可以在云环境中灵活部署和扩展简介|......
  • Databend 源码阅读: Meta-service 数据结构
    作者:张炎泼(XP)DatabendLabs成员,Databend分布式研发负责人https://github.com/drmingdrmer引言Databend是一款开源的云原生数据库,采用Rust语言开发,专为云原生数据仓库的需求而设计。面向云架构:Databend是完全面向云架构的数据库,可以在云环境中灵活部署和扩展简介|......
  • 启动微服务报错:java.lang.IllegalStateException: Service id not legal hostname (se
    Order微服务通过opneFeign调用storage和account时报错原因分析:服务名称不能有下划线,可以使用中划线,Springcloud无法识别下划线,将下划线改为中划线即可注意:这个改了之后,你在进行远程调用的时候,接口对应的方法接口也需要相应改变【分布式开发,一个微服务模块修改了,很可能......
  • Docker启动Nacos报错:Nacos Server did not start because dumpservice bean construct
    一、表象重启服务器之后Docker运行Nacos容器,启动成功,但是外网无法访问。查看了一下Nacos启动日志(dockerlogsnacos容器名)二、分析很明显是数据库配``置问题。。如果是数据库配置的问题,可以着重检查以下信息尤其是MySQL内网Host,查询方式见Docker安装Nacos三、解决我已......