Arthas 使用的各类方式
简介: Arthas 是阿里巴巴开源的 Java 诊断工具。让我们能够在线排查项目发生的问题。除了知道它的存在之外,我们也需要知道我们如何去安装使用它,以便于提高我们日常开发解决 BUG 的效率。
Arthas 是阿里巴巴开源的 Java 诊断工具。让我们能够在线排查项目发生的问题。除了知道它的存在之外,我们也需要知道我们如何去安装使用它,以便于提高我们日常开发解决 BUG 的效率。
方案介绍
方案一:本地直接运行
往往最简单的方法实际是最有效的,它本身就是一个可运行的程序,所以我们可以直接运行即可。
- 我们可以直接通过官网下载对应的 jar,然后运行再进行 jar,执行对应的命令。
- 命令如下:
java -jar arthas-boot.jar [option]
- 演示如下:
方案二:Web Console实现
我们可以不通过每次进入 ssh 中进行执行程序,我们也可通过 web 方式进行访问操作.通过官网上面的介绍 arthas 的 Web Console,能了解到大致的搭建思路。
- 通过下载 arthas-tunnel-server。我们可以拿到对应的 arthas 的 server 端。下载完毕之后直接运行即可(我是将其在 ECS 上直接运行)。
- 在客户端对应的启动 arthas-boot。并且通过启动参数附加上 server 的地址(我是将其在本地运行)。
- 选择对应的进程进行 attach,会出现对应的 agent-id,再将其填写到对应的 server 端 http 页面中。
- 最后我们就可以再 server 端进行操作,即 Web Console 实现完成。
方案三:项目依赖
基于 Spring 相关搭建的项目直接加入依赖(需要对应的环境支持,例如不能缺少 tools.jar)。
- SpringBoot 项目依赖:
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-spring-boot-starter</artifactId>
<version>${arthas.version}</version>
</dependency>
- 非 SpringBoot 项目依赖:
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-agent-attach</artifactId>
<version>${arthas.version}</version>
</dependency>
<dependency>
<groupId>com.taobao.arthas</groupId>
<artifactId>arthas-packaging</artifactId>
<version>${arthas.version}</version>
</dependency>
- 本地项目启动之后可以直接访问:
http://127.0.0.1:3658/
- 当然还可以结合上面介绍的 Web Console。例如配置文件中增加对应的配置信息:
arthas.agent-id=qwejqjnnnunnq
arthas.tunnel-server=ws://server地址:7777/ws
- 演示如下:
以上步骤就是先把 tunnel-server 启动,然后本地配置连接 tunnel-server。然后输入配置的 Id,即可完成对应的调试。
方案四:容器配置
基于 docker 配置,目前上容器服务的企业不在少数。对于容器服务,也是可以适用的。将 jar 下载下来之后进行 ADD 操作,或者每次通过构建 Dockerfile 则会产生对应含有 arthas 的镜像文件。
这里介绍下通过 Dockerfile 进行构建:
FROM openjdk:8-jdk-alpine
ADD target/*.jar app.jar
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
RUN apk add --no-cache tini
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
MAINTAINER Montos 1367654518@qq.com
上述是通过构建 Dockerfile 来完成的,这里就直接将镜像文件贴出来,这里是将当前 arthas 中的文件复制到对应的容器中,之后我们可以通过 exec -it 进入执行,步骤和方法一类似。
总结
通过上面的介绍,其实我更推荐使用 Web 接入的方式更好,原因如下:
- 在服务直接部署在服务器上或者 ECS 云服务器情况下。我们可以直接运行在对应的 client 端,但是我们如何上到各个服务所在的服务器上?通过跳板机?那么我们是不是操作的时候会有可能对应服务器造成影响,直接连接服务器上是肯定不行的。
- 服务在所运行的 pod 情况下。此时让你连接服务是影响是比上面的情况会小很多,如果发生影响也只是影响到当前运行的 pod。但是如果你想直接连接 pod,那么需要的将对应的 pod 端口需要映射到对应的宿主机上,然后再提供外部访问 ecs 的链接。这样会使得每次 pod 需要映射出去的端口需要一定的规则,无疑是加大了运维等工作,运行则也消耗了当前的资源(访问页面等等则走 http 接口请求,如果通过 ws 连接,减少 7 层方面消耗)。
- 如果通过上述方法,那么我们可以再一台机器上运行 server 即可,我们每次访问都通过访问 server 去连接到到对应的 client 端,同时对应的 agent-id 可以指定,我们可以每次 pod 进行 client 运行的时候指定当前的 agent-id,让其与当前的 pod 进行一个绑定,便于我们通过 server 进行连接。
当然上述观点仁者见仁智者见智。以上介绍了几种部署以及运行 arthas 的方法,企业可以根据当前的项目架构选择合适的部署进行解决。为什么需要????就因为能帮助开发解决问题,不需要来回发版!
作者:Montos(一个在后端道路上摸爬滚打的内卷人)
本文为阿里云原创内容,未经允许不得转载
Arthas 使用的各类方式的更多相关文章
- jvm调优神器——arthas
在上一篇<jvm调优的几种场景>中介绍了几种常见的jvm方面调优的场景,用的都是jdk自带的小工具,比如jps.jmap.jstack等.用这些自带的工具排查问题时最大的痛点就是过程比较麻 ...
- 在k8s中使用性能分析神器:arthas
Arthas(阿尔萨斯)是阿里巴巴开源的性能分析神器. k8s中使用arthas的三种方式 [bak]https://www.cnblogs.com/uncleyong/p/15498842.html ...
- JVM CPU Profiler技术原理及源码深度解析
研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈.Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程 ...
- Windows环境下C++中关于文件结束符的问题
参考资料:http://www.cnblogs.com/day-dayup/p/3572374.html 一.前言 在不同的OS环境下,程序中对应的文件结束符有所不一样,根据<C++ Prime ...
- Java EE互联网轻量级框架整合开发— SSM框架(中文版带书签)、原书代码
Java EE互联网轻量级框架整合开发 第1部分 入门和技术基础 第1章 认识SSM框架和Redis 2 1.1 Spring框架 2 1.2 MyBatis简介 6 1.3 Spring MVC简介 ...
- Learning to Rank:pointwise, pairwise, listwise 总结
值得看: 刘铁岩老师的<Learning to Rank for Information Retrieval>和李航老师的<Learning to rank for informat ...
- 推荐排序---Learning to Rank:从 pointwise 和 pairwise 到 listwise,经典模型与优缺点
转载:https://blog.csdn.net/lipengcn/article/details/80373744 Ranking 是信息检索领域的基本问题,也是搜索引擎背后的重要组成模块. 本文将 ...
- 微信支付 V3 开发教程(一):初识 Senparc.Weixin.TenPayV3
前言 我在 9 年前发布了 Senparc.Weixin SDK 第一个开源版本,一直维护至今,如今 Stras 已经破 7K,这一路上得到了 .NET 社区的积极响应和支持,也受到了非常多的宝贵建议 ...
- 如何把Spring学精通了?
作为 Java 后端工程师,几乎都要用到 Spring,今天这篇文章是和大家说说如何学好 Spring. 在之前的一篇 Java 读书路线的文章中,我介绍过 Spring 的读书路线: 虽然 Spri ...
- 如何让Java编译器帮你写代码
作者:京东零售 刘世杰 导读 本文结合京东监控埋点场景,对解决样板代码的技术选型方案进行分析,给出最终解决方案后,结合理论和实践进一步展开.通过关注文中的技术分析过程和技术场景,读者可收获一种样板代码 ...
随机推荐
- Android Studio虚拟机文件默认C盘转移其他盘
原文地址:Android Studio虚拟机文件默认C盘转移其他盘 - Stars-One的杂货小窝 某天发现,新创建的Android13模拟器,把我C盘搞得只剩下9G了,于是折腾了下,把模拟器相关文 ...
- MediaCodec 低延时解码
介绍 我们在使用Android的硬解进行解码时,如果是Android11以上则可以使用其特性低延迟,谷歌官方文档 以下是Android 11支持的低时延特性: ANGLE支持:Android 11引入 ...
- d3d12龙书阅读----d3d渲染流水线
d3d12龙书阅读----d3d渲染流水线 输入装配器阶段 在输入装配器阶段,会从显存中读取顶点与索引这种几何数据,然后根据图形基元的类型,根据索引将顶点组装起来. d3d中的图形基元 我们来看看几种 ...
- Spring Boot学习日记4
学会pom.xml 分析 打开pom.xml,看看Spring Boot项目的依赖: <?xml version="1.0" encoding="UTF-8&quo ...
- TypeScript必知三部曲(二)JSX的编译与类型检查
在本三部曲系列的第一部中,我们介绍了TypeScript编译的两种方案(tsc编译.babel编译)以及二者的重要差异,同时分析了IDE是如何对TypeScript代码进行类型检查的.该部分基本涵盖了 ...
- 元宇宙解决方案——云端GPU在元宇宙中的作用
GPU算力可以说是我们现在信息化时代的基础设施,在某种程度上说我们已经进入了算力时代,手机.电脑.车载等算力已经渗透到各行各业了. 当然算力对元宇宙也很重要,尤其是在可视化方面,元宇宙需要很逼真的渲染 ...
- 汽车VR虚拟仿真技术如何加速自动驾驶的发展?
虚拟现实和虚拟仿真将带领自动驾驶汽车从汽车研发.体验.展厅.销售等各个环节迈入全新时代.2019 年,全球增强现实和虚拟现实市场为168 亿美元,到 2023 年,该市场的未来增长预计将超过 1600 ...
- linux磁盘管理、网络
一 磁盘管理 1 查看磁盘空间的占用 df -h 显示人类易读的方式 linux下磁盘命名格式 /dev/sd[a-z] 2 查看目录的占用空间 du -s 查看目录 -h 显示人类易读的方式 du ...
- drf(路由)
一 自动生成路由 基本使用 # 视图类,继承了ViewSetMixein,路由 # path('books/', views.BookViewSet.as_view(actions={'get': ' ...
- python高级技术(线程)
一 线程理论 1 有了进程为什么要有线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率.很多人就不理解了,既然进程这么优秀,为什么还要线程 ...