商务网站建设与维护 课件,邯郸卓匠网络科技有限公司,云南省建设厅一级建造师网站,北京手机网站制作简介#xff1a; Arthas 是阿里巴巴开源的 Java 诊断工具。让我们能够在线排查项目发生的问题。除了知道它的存在之外#xff0c;我们也需要知道我们如何去安装使用它#xff0c;以便于提高我们日常开发解决 BUG 的效率。 方案介绍
方案一#xff1a;本地直接运行
往往最… 简介 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 项目依赖
dependencygroupIdcom.taobao.arthas/groupIdartifactIdarthas-spring-boot-starter/artifactIdversion${arthas.version}/version/dependency
非 SpringBoot 项目依赖
dependencygroupIdcom.taobao.arthas/groupIdartifactIdarthas-agent-attach/artifactIdversion${arthas.version}/version/dependencydependencygroupIdcom.taobao.arthas/groupIdartifactIdarthas-packaging/artifactIdversion${arthas.version}/version/dependency
本地项目启动之后可以直接访问
http://127.0.0.1:3658/
当然还可以结合上面介绍的 Web Console。例如配置文件中增加对应的配置信息
arthas.agent-idqwejqjnnnunnq
arthas.tunnel-serverws://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 --fromhengyunabc/arthas:latest /opt/arthas /opt/arthas
RUN apk add --no-cache tini
ENTRYPOINT [/sbin/tini, --]
CMD [java,-Djava.security.egdfile:/dev/./urandom,-jar,/app.jar]
MAINTAINER Montos 1367654518qq.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/#!categoryarthas Arthas 实验预览
作者Montos一个在后端道路上摸爬滚打的内卷人
原文链接
本文为阿里云原创内容未经允许不得转载