学习arthas(九)动态执行一些代码
所谓的执行一些代码主要是手工调用已有的一些被加载类的方法,并不是像JavaScript中的eval函数那么自由(本站深度研究过Apache Commons JCI项目可以动态的编译一些Java源代码为class,并加载它们来执行),本次主要使用arthas来执行一些已有的代码,这些代码并不一定是完整可调用的存在于某个方法,可能是需要多行自定义的方法,或者是单独新编写的,用于做一些补偿性的事情,比如某些原因导致的定时任务没有正常的执行,需要手工触发;再比如调用一些方法获取一些连接池的参数等等。 前面有使用`getstatic`和`ognl`分别做过一些实践,本次针对它们再次实践,属实是值得拥有。 1.getstatic实践 (1)通过 getstatic 命令可以方便的查看类的静态属性。使用方法为`getstatic class_name field_name`,推荐直接使用ognl命令,更...
文章分类:经验分享 技术知识
Arthas学习arthas(八)查找某个被加载的类
1.基本介绍 有些时候查找某个被加载的类也是有必要的,当然抛出ClassNotFound异常的除外,特别是针对于需要改写一些第三方框架组件的源代码时,也许是因为源码中的实现不够理想,要么是需要做一些个性化的事情,通常我们的做法并不是去改写这些三方库的源代码jar,而是拷贝一份源代码放置于项目中的同包名同类名,再调整启动脚本优先加载项目内的classes或jar,而后再加载这些第三方的jar,使得预先加载的是项目中的代码(项目中修改过的代码)。所以,基本上有这几种场景是这么干过: (1)在使用Google的zxing生成二维码组件时,由于它默认生成的二维码带有一些宽度的白色边框(差不多10像素),如果需要取消白边,通常的做法就是改动源代码(本站有对于此问题的解决); (2)在使用第三方登录时(如:QQ、微博等)它们提供的SDK示例程序的参数都使用配置文件存储的,本站在实现时将这些配置文件存储...
文章分类:经验分享 技术知识
Arthas学习arthas(七)arthas-tunnel-server的摸索
1.简单介绍 起初在下决心在开始摸索Arthas时,在GitHub的Release版本下载的链接里有一项名为“arthas-tunnel-server-3.7.1-fatjar.jar”的文件,尽管当初并不知道它是什么,作用是什么,仍然选择了实践arthas。随着实践的深入在掌握一些细节后也逐渐把这块东西的脉路给摸清楚了(非专业的浅见),我所理解arthas-tunnel-server的意思是一种arthas的server服务端,可单独作为arthas的中央服务器与各个项目连接,各个项目中内部集成arthas,无需额外再部署arthas,并以Web Console的方式在线访问,形成一种在线连接管理多个项目的集提继承,由各个项目自己提供arthas,arthas-tunnel-server负责请求命令转发交互。所以,此处奉上两个不专业的arthas应用部署结构图,参考如下: (单机应用结构...
文章分类:经验分享 技术知识
Arthas学习arthas(六)增强命令
1.monitor 方法执行监控 (1)对匹配 class-pattern/method-pattern/condition-express的类、方法的调用进行监控。 (2)monitor 命令是一个非实时返回命令. (3)实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 Ctrl+C 为止。 (4)服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 命令不会引起原有业务逻辑的改变。 监控的维度说明 时间戳(timestamp)、Java 类(class)、方法(构造方法、普通方法 method)()、调用次数(total)、成功次数(success)、失败次数(fail)、平均 RT(rt)、失败率(fail-rate) 参数说明 (...
文章分类:经验分享 技术知识
Arthas学习arthas(五)类命令
1.sc 查看 JVM 已加载的类信息,“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有 [d]、[E]、[f] 和 [x:]。 (1)class-pattern 支持全限定名,如 com.taobao.test.AAA,也支持 com/taobao/test/AAA 这样的格式,这样,我们从异常堆栈里面把类名拷贝过来的时候,不需要在手动把/替换为.啦; (2)sc 默认开启了子类匹配功能,也就是说所有当前类的子类也会被搜索出来,想要精确的匹配,请打开options disable-sub-class true开关; 2.sm 查看已加载类的方法信息,“Search-Method” 的简写,这个命令能搜索出所有已经加载了 Class 信息的方法信息。 sm 命令只能看到由当前类所声明 (declaring) 的方法,...
文章分类:经验分享 技术知识
Arthas学习arthas(四)系统命令
系统的命令并不是说操作系统的命令,这里是指与监控的Java进程相应的服务交互的指令,包含调用起来比较简单,可以查看整体进程信息的,所以我觉得这部分的命令范围如下文所示。 1.dashboard 描述:概述目标jvm的线程,内存,gc, vm, tomcat信息。 当前系统的实时数据面板,按 ctrl+c 退出。默认每间隔 5 秒执行一次实时数据的输出。 该命令有两个参数: -i, --interval <value> 这个命令执行的间隔时间,单位毫秒,默认5000毫秒,即5秒钟; -n, --number-of-execution <value> 这个命令将被执行的次数; 如:每间隔1秒输出一次,共执行2次,命令:dashboard -i 1000 -n 2 (帮助文档) (运行结果) 2.thread 描述:查看当前线程信息,查看线程的堆栈。 参数名称 参数说明 id 线程 id [n:...
文章分类:经验分享 技术知识
Arthas学习arthas(三)命令大全与简单命令
1.基本介绍 Arthas 是个功能强大的 Java 诊断工具,提供多种监控、诊断和调试功能。无论是使用xshell还是Web Console连接,与Arthas交互都是依赖各种各样的命令进行交互的,在官方的在线教程中可以看到将命令划分为:基础命令、系统命令、类命令、增强命令几种,无论是学习入门教程、进阶教程还是用户案例,都需要对它内置的命令进行掌握。在线输入命令进行交互式实践,以下是所有基础命令的列表: 2.命令大全 命令大全主要是罗列了help命令得到的所有的命令,又补充了个别的命令整理的汇总列表,所有命令严格区分大小写,参考如下表格所示: 参数名 参数说明 翻译 help Display Arthas Help 显示Arthas帮助 auth Authenticates the current session 对当前会话进行身份验证 keymap Display all the av...
文章分类:经验分享 技术知识
Arthas学习arthas(二)Web Console控制台
(1)Arthas 目前支持 Web Console,用户在 attach 成功之后,可以直接访问:http://127.0.0.1:8563/(在arthas.properties配置文件中设置了`arthas.localConnectionNonAuth=true`本机连接无需授权),即在线诊断,点开网页诊断线上应用。 (2)8563是它默认监听的http端口,默认它只可以本机访问,因为我的Linux上未安装图形化界面无法使用浏览器,可使用target参数设置arthas的Web Console可以被远程访问的IP段,同时设置远程访问端口和用户名及密码,即可实现远程监控Java进程。 1.参数配置 在ARTHAS_HOME的bin目录下有“arthas.properties”配置文件,默认的参数如下所示: 2.启动arthas 参考命令 “./as.sh --target-ip 0.0...
文章分类:经验分享 技术知识
Arthas学习arthas(一)安装与入门介绍
官网地址:https://arthas.aliyun.com/ Github地址:https://github.com/alibaba/arthas/releases Arthas的读法:翻译为“阿尔萨斯” 1.安装介绍 关于Arthas的安装比较简单,几乎就是下载完安装文件就算是准备就绪了,再一执行就算运行了。官网提供了4种方式,有快速安装、全量安装、手动安装、通过 Cloud Toolkit 插件安装几种,以下为几种安装方式的简单介绍: (1)快速安装:分为两种,分别是在线下载jar和sh脚本的方式,该方式为官方推荐安装方式,最为简单,直接下载的就是SpringBoot可执行文件(可执行命令),前者jar文件兼容Windows和Linux,后者sh文件只适合Linux环境运行,缺点就是需要有外网的支持,适合个人机器,对于单位内网的模式无法直接一个命令直接完活; (2)全量安装:是下载A...
文章分类:经验分享 技术知识
Arthas开篇学习arthas啦
1.背景介绍 从上次学习分享完《画图组件jgraphx流程图》距今也有两个月了,一直也是不停的想要继续学习新的东西,在GitHub上逛了许久之后最终选择了阿里开源的arthas,它是Java应用程序的诊断和故障排查工具,可适用于线上生成环境监控诊断的中间件。通过全局视角实时查看应用信息、内存、gc、线程的状态等信息,同时它能够在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。更为有价值的是它支持无侵入式的为程序代码进行热更新(热部署)即时生效。 很多时候对于生产问题的排查一直都是望洋兴叹的,原因可以是多种多样的,即便是分析出来加以改正也需要进行版本变更升级,若是分析不出来或者是很难分析出来也只能是再细化一些程序日志的输出进行后续的跟踪。当然了若是简单容易可以排查的问题高水平的选手一般也不会出现简单底层的问...
文章分类:经验分享 技术知识
Arthas运营时间: 天
用户数量: 人
文章数量: 篇
评论数量: 条
点赞个数: 个
最后更新:
欢迎来到陈冬冬的学习天地 | 学习与经验整理分享平台