当前位置:主页 > 产品展示 > 兰格精密泵 >

产品展示

Products Classification

开云体育app官方版下载_线上应用诊断与调试利器——Arthas

  • 产品时间:2023-01-29 18:26
  • 价       格:

简要描述:转载本文需注明出处:微信民众号EAWorld,违者必究。‍‍‍‍‍什么是Arthas‍‍‍‍‍‍‍‍‍‍‍‍‍Java 诊断利器 Arthas,是阿里的一款开源工具。Github-alibaba/arthas 上可以看到它的先容。 在日常开发中,当我们发现应用的某个接口响应比力慢,这个时候想想要分析一下原因,找到代码中耗时的部门,比力容易想到的是在接口链路的 IO 操作上下游打印时间日志,再凭据几个时间点的日志算出耗时长的 IO 操作。...

详细介绍
本文摘要:转载本文需注明出处:微信民众号EAWorld,违者必究。‍‍‍‍‍什么是Arthas‍‍‍‍‍‍‍‍‍‍‍‍‍Java 诊断利器 Arthas,是阿里的一款开源工具。Github-alibaba/arthas 上可以看到它的先容。 在日常开发中,当我们发现应用的某个接口响应比力慢,这个时候想想要分析一下原因,找到代码中耗时的部门,比力容易想到的是在接口链路的 IO 操作上下游打印时间日志,再凭据几个时间点的日志算出耗时长的 IO 操作。

开云体育app官方版下载

转载本文需注明出处:微信民众号EAWorld,违者必究。‍‍‍‍‍什么是Arthas‍‍‍‍‍‍‍‍‍‍‍‍‍Java 诊断利器 Arthas,是阿里的一款开源工具。Github-alibaba/arthas 上可以看到它的先容。

在日常开发中,当我们发现应用的某个接口响应比力慢,这个时候想想要分析一下原因,找到代码中耗时的部门,比力容易想到的是在接口链路的 IO 操作上下游打印时间日志,再凭据几个时间点的日志算出耗时长的 IO 操作。这种方式没有问题,可是加日志需要公布,既繁琐又低效,这个时候可以引入一些线上 debug 的工具,arthas 就是很好的一种,除了分析耗时,还可以打印挪用栈、方法入参及返回,类加载情况,线程池状态,系统参数等等,其实现原理是剖析 JVM 在操作系统中的文件,大部门操作是只读的,对服务历程没有侵入性,因此可以放心使用。

Arthas能解决什么问题?从我小我私家的使用履历来看,Arthas至少帮我解决了以下几个问题:监控某方法检察其整个挪用链路,从而找出某次挪用的性能瓶颈。反编译某个类,检察线上的代码是否与当地代码一致,制止没有提交接码而导致的问题。站在全局视角检察整个系统的运行情况,好比视察内存增长、GC的情况。在微服务架构配景下,通常当地没有完整的情况,此时可以直接在测试情况监控某个方法传入的参数是否正确,返回值是否正确。

快速开始下载并启动arthas输入以下下令启动arthas法式 curl -O https://arthas.aliyun.com/arthas-demo.jarjava -jar arthas-demo.jar选择需要监控应用的历程编号,回车后Arthas会attach到目的历程上,并输出日志: 容器中使用 docker exec -it arthas-demo /bin/sh -c "java -jar /opt/arthas/arthas-boot.jar"甚至我们可以直接把arthas放到容器镜像文件中: COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas Arthas常用下令下面简要为大家先容一下Arthas常用的几个下令。dashboard使用dashboard下令会显示以下信息:1. 当前最忙碌的一些线程2. 显示应用当前使用的内存信息,包罗堆内存、新生代伊甸区、暮年代、非堆内存的使用情况。

3. 显示法式的GC情况,包罗YGC次数、总花费时间,FGC的次数、总花费时间。4. 当前法式的一些信息,包罗系统版本、JDK版本、法式运行时长等。

Thread检察当前线程信息,检察线程的客栈 // 检察 CPU 使用率 top n 的线程的栈,当前最忙的前 n 个线程:thread -n 3// 检察 5 秒内的 CPU 使用率 top n 的线程栈:thread -n 3 -i 5000​// 检察线程是否有阻塞:thread -b watch有时候我们不太利便举行当地调试,这个时候可以使用watch监控某个方法,然后点击相关的功效,检察该方法的挪用情况: watch com.primeton.dgp.assets.controller.DsResourcePoolController getResourcePool "{params,returnObj}" -x 2执行以上下令后,控制台会hold在被监控的方法上,此时再次点击页面上的按钮,控制台就会打印此次的挪用效果。tracetrace 下令能主动搜索 class-pattern/method-pattern 对应的方法挪用路径,渲染和统计整个挪用链路上的所有性能开销和追踪挪用链路。通常我们用这个方法可以看到整个挪用路径的耗时,从而找出真正的性能瓶颈,资助解决问题。

开云体育app官方版下载

trace com.primeton.dgp.assets.controller.DsResourcePoolController getResourcePool tttt方法执行数据的时空隧道,记载下指定方法每次挪用的入参和返回信息,并能对这些差别的时间下挪用举行观察,使用方法如下: tt -t com.primeton.dgp.assets.controller.DsResourcePoolController getResourcePool执行此下令后,arthas会记载下指定方法的每次挪用情况现场,并打印一些相关的信息,如挪用时长、是否正常返回、是否抛出异常等。显示所有被记载的挪用列表 tt -l 重做一次挪用。

tt 下令由于生存了其时挪用的所有现场信息,所以我们可以自己主动对一个 INDEX 编号的时间片自主提倡一次挪用,从而解放你的相同成本。此时你需要 -p 参数。

通过 --replay-times 指定 挪用次数,通过 --replay-interval 指定多次挪用距离(单元ms, 默认1000ms) tt -i 1001 -p --replay-times 3 --replay-interval 3000 jadjad 下令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你明白业务逻辑;反编译出来的源码是带语法高亮的,阅读更利便。当我们看到某个方法的挪用时长显着过长,或者时空隧道中某方法抛出异常,这个时候就可以直接反编译相关的方法,看看是否能找出原因。

其他除了以上很常用的下令以外,arthas另有许多实用下令,大家可以参考官方文档来使用 https://arthas.aliyun.com/doc/index.html另外,每一个下令都支持-help参数,可以检察该下令的说明、参数,甚至包罗了使用例子,可以说是很是贴心了 案例案例1我们准备了一个简朴的springboot应用,应用内有一个Controller,返回一个字符串,代码如下: @RestControllerpublic class DemoController {​​@GetMapping(value = "/getDemo")public String getDemo(){return "demo 1"; }}启动法式,会见刚刚准备好的controller获得了下面的效果接下来我们要实验在没有源码的情况下修改demo controller的返回值,并在不重启应用的情况下,使我们修改的返回值生效。首先启动arthas并织入到适才的demo,然后反编译DemoController光临时文件夹。

jad --source-only com.example.arthas.DemoController > /tmp/DemoController.java接下来我们用vim修改反编译出来的代码 查询加载原有DemoController类的ClassLoader sc -d com.example.arthas.DemoController重新编译修改后的类 mc -c 685f4c2e /tmp/DemoController.java重新加载修改后的类 redefine -c 685f4c2e /opt/arthas/demo/com/example/arthas/DemoController.class 此时,无需重启应用,我们重新会见适才的controller,会发现返回效果已经乐成更改了。案例2某燃气系统由于被众多地域的燃气公司所使用,所以版本繁多,履历过许多轮的测试,其中比力耗时的当属性能测试了。

开云体育app官方版下载

以往性能测试事情通常耗时很长,主要是性能测试人员并纷歧定熟悉项目代码,导致压力测试泛起问题的时候不容易找到问题的所在。在本次的表具接口的性能测试中,我们使用Arthas工具举行故障的快速定位,大幅淘汰了性能测试的时间,到达了很好的效果。本次压力测试的历程中我们发现,当并蓬勃到一定数量的时候系统会卡死,大量新的请求会超时。

使用dashboard检察发现系统的大量线程处于block或者wating中。使用trace下令,将压力测试的方法举行监控,并生存到日志文件中,接着重新跑一轮压力测试。trace -n 150000 com.towngas.tcis.interfaces.nb.NbInfoServlet getService >> tt-2020-10-17-NbServlet-getService监控日志,当用户数到达500+的时候果真发现了问题 继续使用trace下令跟踪,发现了可能泛起问题的方法使用jad下令反编译该代码可以看到HttpClient并没有被立刻关闭,使用release的释放后关闭通常没有问题,可是释放资源有一个历程通常是180秒,所以如果短时间有大量接口挪用,会导致打开的socket毗连数量凌驾系统设定值。找到原因后问题得以顺利解决,压力测试得以顺利完成。

小结本次的分享为大家先容了Arthas的基本观点与基础的使用方法。更为详细的使用方法、下令的更多参数,还请检察Arthas的官方文档。https://arthas.aliyun.com/doc/index.html关于作者:李云涛,普元高级开发工程师,擅长性能调优、微服务、容器、消息行列等技术。

先后到场邮储银行Java开发平台、中移总ERP流程平台、中煤信息技术中台等平台的的架构设计与平台研发事情。关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。


本文关键词:开云体育app官方版下载,开云,体育,app,官方,版,下载,线上,应用,诊断

本文来源:开云体育app官方版下载-www.zzlrz.com

 


产品咨询

留言框

  • 产品:

  • 留言内容:

  • 您的单位:

  • 您的姓名:

  • 联系电话:

  • 常用邮箱:

  • 详细地址:


推荐产品

Copyright © 2006-2022 www.zzlrz.com. 开云体育app官方版下载科技 版权所有 备案号:ICP备76031294号-2

在线客服 联系方式 二维码

服务热线

0881-958688476

扫一扫,关注我们