当前位置: 首页 > news >正文

网站建设it职位seo技术服务外包公司

网站建设it职位,seo技术服务外包公司,中央经济工作会议原文,成都专业网站推广公司文章目录 前言一、介绍1.1 功能1.2 原理 二、安装使用2.1 下载2.2 使用 三、常用3.1 实时查看3.2 追踪查看3.3 辅助命令3.4 热更新3.5 监控 四、实战4.1 CPU/内存占用过高4.2 接口耗时高4.3 找到类所在jar4.4 查找类的实例4.5 生成火焰图 参考 前言 在现代软件开发中&#xff…

文章目录

  • 前言
  • 一、介绍
    • 1.1 功能
    • 1.2 原理
  • 二、安装使用
    • 2.1 下载
    • 2.2 使用
  • 三、常用
    • 3.1 实时查看
    • 3.2 追踪查看
    • 3.3 辅助命令
    • 3.4 热更新
    • 3.5 监控
  • 四、实战
    • 4.1 CPU/内存占用过高
    • 4.2 接口耗时高
    • 4.3 找到类所在jar
    • 4.4 查找类的实例
    • 4.5 生成火焰图
  • 参考

前言

在现代软件开发中,应用程序的监控和调试是非常重要的环节。特别是在复杂的 Java 应用程序中,排查问题、优化性能和定位异常往往成为开发者的一项挑战。针对这个问题,阿里巴巴开发了一款强大而灵活的 Java 诊断工具,名为 Arthas

Arthas 框架被誉为"Java开发者的神器",它旨在帮助开发者实时监控和深入调试 Java 应用程序,提供了丰富的功能和便捷的操作。无论是在开发、测试还是生产环境中,Arthas 都能够以低侵入性的方式提供全面的应用程序观测和问题诊断能力。

  • github: https://github.com/alibaba/arthas
  • 官网:https://arthas.aliyun.com/

Arthas支持 JDK 6+,支持 Linux/Mac/Windows ,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断,当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:

  1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
  2. 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
  3. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
  4. 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
  5. 是否有一个全局视角来查看系统的运行状况?
  6. 有什么办法可以监控到 JVM 的实时运行状态?
  7. 怎么快速定位应用的热点,生成火焰图?
  8. 怎样直接从 JVM 内查找某个类的实例?

在本篇博文中,我们将全面介绍 Arthas 框架的基本概念和原理,详细探讨 Arthas 的常用操作以及如何使用它进行监控和调试。我们还将给出一些实际应用场景的示例,让读者能够更好地理解和运用 Arthas 来提升自己的 Java 开发调试能力。

一、介绍

1.1 功能

  1. 监控(Observability):Arthas 提供了实时监控 Java 应用程序运行状态和性能的功能。通过监控,开发者能够获得关键的运行指标,如方法调用、线程状态、堆栈跟踪等,从而可以全面了解应用程序的运行情况。
  2. 诊断(Diagnosis):Arthas 支持深入调试和诊断Java应用程序,帮助开发者定位和解决问题。开发者可以通过 Arthas 提供的命令行界面,进行方法追踪、变量修改、热替换等操作,以便更好地理解代码执行过程和解决潜在的问题。
  3. 命令行界面(Command-line Interface):Arthas 使用简洁而强大的命令行界面来操作和控制监控和诊断功能。开发者可以通过在命令行中输入特定的命令,来获取所需的监控数据、执行诊断操作或配置监控规则等。这种命令行交互的方式使得 Arthas 对于开发者来说非常方便和灵活。

总而言之,Arthas框架基于监控和诊断的概念,通过命令行界面,提供了实时监控和深入调试 Java 应用程序的能力。

1.2 原理

  1. 基于Java的 Instrumentation 机制和字节码增强技术:

    • Instrumentation 是 Java SE 5 引入的一个功能强大的 API,它允许开发者在运行时修改、替换或者重新定义字节码,而不用修改源代码。

    • Arthas利用Java的Instrumentation API,在目标应用程序的启动过程中动态加载字节码增强器。

    • 字节码增强器负责对目标应用程序的类进行字节码修改和增强。

  2. 目标应用程序的运行时监控和诊断:

    • Arthas的字节码增强器根据监控规则和命令行输入的指令,在目标应用程序的方法中插入自定义的代码逻辑。
    • 插入的代码逻辑会在方法调用前后、异常抛出等关键点触发,实现对目标应用程序的监控和诊断。
  3. 动态代理技术:

    • Arthas利用 Java 的动态代理技术,对目标对象进行包装,以便在方法执行前后添加额外的逻辑。
    • 这样,Arthas 可以实现对目标对象的监控和诊断,无需修改目标对象的源代码。

Arthas的核心原理是利用Java的Instrumentation机制和字节码增强技术,在 目标应用程序运行时动态地修改和增强其字节码,从而实现对目标应用程序的监控和诊断功能。这种低侵入性的设计使得Arthas可以在不停止应用程序的情况下对其进行实时监控和调试,极大地提高了开发者的效率和调试能力。

二、安装使用

2.1 下载

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

上面jar包,第一次启动后会接着下载所需依赖包,如果不成功可直接在github上下载完整包

2.2 使用

使用和目标进程一致的用户启动,否则可能 attach 失败

java -jar arthas-boot.jar

进入命令行界面,需要选择想追踪的 java 进程

00

三、常用

3.1 实时查看

通过Arthas进行全局 JVM,线程,方法调用和堆栈跟踪分析

  • 使用dashboard 实时查看全局 JVM

    01

  • 获取实时线程的信息

    thread 1 #找到主线程thread -n 3 # 找到当前最忙的3个线程thread -b # 找出当前阻塞其他线程的线程,只支持找出 synchronized 关键字阻塞住的线程thread --state # 查看指定状态的线程
    

    02

  • 在所有匹配的方法调用处打印方法参数、返回值和执行时间等信息。

    trace demo.MathGame run
    trace com.example.MyClass *
    

    03_trace

  • watch

    对函数执行数据观测,让你能方便的观察到指定函数的调用情况。能观察到的范围为:返回值抛出异常入参,通过编写 OGNL 表达式进行对应变量的查看。

    4 个观察事件点,即 -b 函数调用前,-e 函数异常后,-s 函数返回后,-f 函数结束后(默认)

    # 查看运行方法超时的参数和返回结果
    watch demo.MathGame primeFactors '{params, returnObj}' '#cost>0.03' -n 1
    

    watch

3.2 追踪查看

  • watch 虽然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测,这时tt 就可以发挥作用了,它能记录下当时方法调用的所有入参和返回值、抛出的异常

    可以通过tt -t 记录所有运行得方法,找到自己想要的,然后通过tt -i [index]查看具体参数,如果参数比较复杂,还可以通过-w 通过ognl表达式访问

    tt -t demo.MathGame primeFactors
    tt -i 1008
    tt -i 1008 -w 'params[0].obj'
    

    tt

    tt_01

    字段含义
    IS-RET方法是否以正常返回的形式结束
    IS-EXP方法是否以抛异常的形式结束

3.3 辅助命令

  • 强制GC

    vmtool --action forceGc
    
  • 重载方法

    有时匹配方法会碰到重载方法,可通过下面OGNL表达式挑选

    'params.length== 参数个数 && params[0] instanceof java.lang.String'
    

3.4 热更新

展示 Arthas 如何实现无需重启应用程序而进行热更新

retransform  /path/to/new/class/file
# 显示替换的类
retransform -l
# 根据id删除
retransform -d 1

注意:

  • 不允许新增加 field/method
  • 正在跑的函数,没有退出不能生效
  • 应该谨慎使用热更新,避免对系统稳定性和安全性产生负面影响

3.5 监控

使用monitor命令

# c	统计周期,默认值为 120 秒
monitor -c 5 demo.MathGame primeFactors "params[0] <= 2"

在这里插入图片描述

监控项说明
timestamp时间戳
classJava 类
method方法(构造方法、普通方法)
total调用次数
success成功次数
fail失败次数
rt平均 RT
fail-rate失败率

Arthas的监控功能灵活而强大,可以帮助开发人员及时发现和解决系统性能或行为问题。但需要注意的是,监控需要消耗一定的系统资源,因此应该合理设置监控规则,避免对系统产生额外的负担。

四、实战

4.1 CPU/内存占用过高

  • dashboard 查看占用CPU最高的线程名字,然后通过 thread ID 查看具体线程信息
  • 如果dashboard 面板的堆栈空间内存占用过多,可通过heapdump heapdump.hprof导出dump文件,用MAT 或 jvisualvm 查看

4.2 接口耗时高

  • 可通过trace demo.MathGame primeFactors 对应接口相关类和方法追踪
  • 还可以通过trace demo.MathGame primeFactors '#cost > 100' 将筛选耗时 >100ms 的方法

4.3 找到类所在jar

使用sc -d命令:使用以下命令进行类的查找:

  1. sc -d className
    

    其中,className为待查找的类的全限定名,例如demo.MathGame

  2. 查看结果:Arthas会输出类的相关信息,包括类所在的Jar包路径。在其中找到“code-source”一项,即可获得该类所在的Jar包路径。

    sc

注意事项:

  • 如果类尚未被加载,那么无法通过sc -d命令找到类所在的Jar包。
  • 如果类存在于多个Jar包中,Arthas 将只显示一个匹配。如果需要找到所有匹配的Jar包,可以使用sc -d className --deep命令进行深度查找。

4.4 查找类的实例

可以使用vmtool 获取实例

vmtool --action getInstances --className java.lang.String --limit 10

vm_tools

4.5 生成火焰图

开始采集:执行profiler start命令,开启性能分析。profiler 执行时间可以根据参数调整,如 --duration 10 --interval 500采样周期为500ms,持续10秒。
当命令执行完毕后,会在output目录下生成html文档,包含对应火焰图

此命令不支持windows

profiler start --duration 10 --interval 500

profiles

参考

  1. https://arthas.aliyun.com/doc/
  2. Arthas 看了官方文档还不会用?进来了解一哈~
http://www.tj-hxxt.cn/news/65829.html

相关文章:

  • 柯城建设局网站网络推广合同
  • 南山网站设计费用河南省干部任免最新公示
  • 如何注册一个网站域名备案seo入门讲解
  • 有哪些设计网站营销推广活动策划方案大全
  • 制作网站river百度网盘电脑网页版
  • 湘潭市网站建设科技有限公司如何快速推广
  • 设计网站价格表系统优化大师下载
  • 北京医疗网站建设做网页设计一个月能挣多少
  • wordpress添加小工具seo网站介绍
  • 高端定制网站开发建站教程详解短视频seo推广
  • 东方资产营销网站一键关键词优化
  • 做阀门的英文网站怎么写谷歌优化的最佳方案
  • 招远网站建设哪家好网站设计与建设
  • 做的好详情页网站郑州专业网站建设公司
  • 做网站直播的主播靠谱吗网络营销企业网站优化
  • 在线自助下单网站大数据营销精准营销
  • 南宁网站制作代理广告投放平台
  • 免费企业网站cms免费个人网站申请
  • wordpress开发的网站有哪些公司网站建设方案
  • deppt模板网seo关键词排名优化哪好
  • 双陈记 wordpress最好的优化公司
  • 做网站用什么软件做seo网站关键词排名优化
  • 我的世界大橙子做皮肤的网站名风seo软件
  • 芜湖镜湖区城乡建设委员会网站百度大全
  • 做html网站交换链接的方法
  • 深夜18款免费软件app下载在线seo超级外链工具
  • 学校网站维护怎么做谷歌优化师
  • 小说网站建设笺池斋hao123网址导航
  • 网站水印怎么做的网络运营策划
  • 兰州百度网站建设长沙网站推广排名优化