作者 | Montos(一个在后端道路上摸爬滚打的内卷人)
来源|阿里巴巴云原生公众号

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 的方法,企业可以根据当前的项目架构选择合适的部署进行解决。为什么需要????就因为能帮助开发解决问题,不需要来回发版!

欢迎登陆 start.aliyun.com 知行动手实验室体验 Arthas 57 个动手实验:https://start.aliyun.com/handson-lab/#!category=arthas

Arthas 实验预览

为了让更多开发者开始用上 Arthas 这个 Java 诊断神器,Arthas 社区联合 JetBrains 推出 Arthas 有奖征文活动:聊聊这些年你和 Arthas 之间的那些事儿。活动仍在火热进行中,点击即可参与,欢迎大家踊跃投稿,参与即有可能获奖!

Arthas 使用的各类方式相关推荐

  1. 解决存储过程中数据安全问题的四种方式

    随着科技的不断发展,数据量也正在呈指数倍的增加.在这样一个大背景下,存储产品成为了时下市场中最热的产品.而数据的安全性也变得尤为重要.后端存储已经逐渐成为企业业务系统的核心和关键. 一般而言,我们有四 ...

  2. opencv 一种灰度图像增强方式

    opencv 取灰度图颜色范围 opencv有自己的图像增强函数,这里提出一种定义范围颜色的增强方式, 下面是opencv自带直方图增强的函数,equalizeHist,如果需要三通道增强,可以分别取 ...

  3. Arthas、jprofiler使用

    Arthas和JDK中的JVM工具.jprofiler一样,可以分析Java进程. 官方文档:https://arthas.aliyun.com/doc/ jprofiler: 官网:https:// ...

  4. Arthas 快速入门

    Arthas (阿尔萨斯) 能为你做什么? Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱.当你遇到以下类似问题而束手无策时, Arthas 可以帮助你解决: 1. 这个类从哪个 ...

  5. 在k8s中使用性能分析神器:arthas

    Arthas(阿尔萨斯)是阿里巴巴开源的性能分析神器. k8s中使用arthas的三种方式 [bak]https://www.cnblogs.com/uncleyong/p/15498842.html ...

  6. 记一次由Arthas引起的Metaspace OOM问题

    如无特殊说明,本文默认基于以下环境叙述: JDK: OpenJDK 14GA macOS 10.15 Arthas 3.3.9 VisualVM 2.0.2 从Arthas 3.4.2开始,此问题已经 ...

  7. 各类网页劫持浏览器主页手段有那些、网页劫持怎么解决

    相信不少用户都经历过这样恼人的经历:打开常用的浏览器后,突然发现首页大变样,各种导航站铺满全屏,还充斥悬浮广告和各类弹窗,好不容易修改回原有的首页,没过多久却又被"劫持",难道自己 ...

  8. 微软正式发布Office2010 运营方式向云计算转型

    网易科技讯 5月13日凌晨消息,微软今天正式在全球发布了包括MS Office 2010在内的商用平台软件.和以往相比,新商用软件平台最大的改变,是微软在朝着在线软件发展,而微软也将改变以往批量授权的 ...

  9. JVM CPU Profiler技术原理及源码深度解析

    本文介绍了JVM平台上CPU Profiler的实现原理,希望能帮助读者在使用类似工具的同时也能清楚其内部的技术实现. 引言 研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能 ...

最新文章

  1. 渗透测试learning日记(1)
  2. TACACS 协议简介与开发总结
  3. Python探索记(01)——HelloWorld及Python的注释
  4. 【最简代码】1076 Wifi密码 (15分)_8行代码AC
  5. linux 源码安装mysql5.7_linux安装mysql5.7.27
  6. 基于java的银行综合业务柜台系统设计与实现(含源文件)
  7. SpringCloud大致架构
  8. RSA大会:中国信息安全的“走出去”与“学回来”
  9. 好朋友,记得要经常联系
  10. 南京铁道学院计算机应用,南京铁道职业技术学院铁道交通运营管理专业
  11. PHP 解决未定义变量报错
  12. Hdu1412 (set......Java)
  13. emule最新服务器地址,emule更新服务器列表
  14. 在mac上用文本编辑器写java源代码
  15. python开发浏览器_Python制作简易浏览器
  16. 计算机添加桌面小插件,一款实用的Windows小插件 ——桌面日历DesktopCal
  17. TcaplusDB君 · 行业新闻汇编(7月2日)
  18. echarts去除x轴和y轴上的刻度值_Echarts实现隐藏x轴,y轴,刻度线,网格
  19. 10、spss做最优尺度分析
  20. 监控远程log4.net日志

热门文章

  1. 013 自动吃药功能的设计和实现
  2. 160个Crackme014
  3. 5、(字符串类型)CHAR、VARCHAR、TEXT、ENUM、SET
  4. 1.13 抽象类和接口的区别
  5. 1012 The Best Rank (25 分)【难度: 中 / 知识点: 排序 前缀和】
  6. 第一章 Matlab的简单介绍
  7. python爬取地图上的经纬度_Python调用百度地图API爬取经纬度
  8. Failed to invoke the method subscribe in the service com.alibaba.dubbo.registry.RegistryService
  9. ubuntu下使用filezilla上传文件权限问题(open for write: permission denied)
  10. Spring教程--AOP简介