热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发效率提升(arthas)

简介Arthas是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业



简介

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

关于arthas的命令使用,在官网上已经有了很详细的介绍了,下面我们重点讲解一下arthas在各种环境下的运行方式。

image-20221016160003186

安装与运行


方案一:宿主机和Docker中手动安装

下载arthas-boot.jar,然后用java -jar的方式启动:

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

启动arthas之后输入需要监控的进程pid即可进入arthas终端。

方案二:Alibaba Cloud Toolkit运行arthas

Cloud Toolkit是一个IDE 插件,帮助开发者更高效地开发、测试、诊断并部署应用。使用本插件,开发者能够方便地将本地应用一键部署到任意机器,或 ECS、EDAS、Kubernetes;并支持高效执行终端命令和 SQL 等。

setp1:下载插件并重启idea

image-20221016172703687

setp2:配置服务器相关信息

image-20221016172555005

注意:ssh的端口号是22,如果是容器环境需要将宿主机的端口号映射为容器的22端口,连接的时候填宿主机端口

image-20221016172634728

setp3:运行arthas

image-20221016172736077

点击诊断之后会自动运行arthas-boot.jar,如果服务器中没有java进程,则arthas进程会自动退出。

image-20221017105310646

方案三:把arthas安装到基础镜像

在构建容器镜像的时候直接将arthas打包进镜像中,也分为两个方式:在构建镜像的时候下载和从主机中拷贝。在docker中安装arthas的前提是容器中安装的java环境是JDK,如果安装JRE则会缺失很多JAVA的命令工具和类库,Arthas是没法正常工作的。

  • 下载

RUN apt-get update
RUN apt-get install -y curl #install wget lib
RUN mkdir -p arthas && cd arthas #create folder and cd to folder
RUN curl -O https://arthas.aliyun.com/arthas-boot.jar

  • 拷贝

FROM adoptopenjdk/openjdk8:alpine-slim
# copy arthas
COPY arthas/arthas-boot.jar /opt/arthas

拷贝的时候要注意一下文件的路径

image-20221017112502917

方案四:使用arthas-spring-boot-starter


1、在项目的pom.xml引入

<dependency>
<groupId>com.taobao.arthasgroupId>
<artifactId>arthas-spring-boot-starterartifactId>
<version>${arthas.version}version>
dependency>

2、修改yml文件

yml有两种配置方式

2.1、Arthas Tunnel实现远程管理

  • a、下载并部署arthas tunnel server

https://github.com/alibaba/arthas/releases

  • b、启动arthas tunnel server

java -jar arthas-tunnel-server-3.5.0-fatjar.jar

注&#xff1a; 默认情况下&#xff0c;arthas tunnel server的web端口是8080&#xff0c;arthas agent连接的端口是7777

  • c、在项目的yml配置如下内容

arthas:
agent-id: ${ARTHAS_AGENT_ID:hsehdfsfghhwertyfad}
app-name: ${spring.application.name}
tunnel-server: ${ARTHAS_TUNNEL_SERVER:ws://localhost:7777/ws}

注&#xff1a; agentId要保持唯一&#xff0c;否则会在tunnel server上冲突&#xff0c;不能正常工作

  • d、访问tunnel server

image-20221016164315513

2.2、直接在项目的yml配置

arthas:
# 通过http访问的端口
http-port: 8563
# 通过telnet访问的端口
telnet-port: 3658
session-timeout: 1800
# 绑定的ip
ip: 0.0.0.0

注&#xff1a; 如果配置 arthas.telnetPort为 -1 &#xff0c;则不监听 telnet端口。如果配置 arthas.telnetPort为 0 &#xff0c;则随机telnet端口。arthas.httpPort类似。

绑定的ip

ip: 0.0.0.0


**注&#xff1a;** 如果配置 arthas.telnetPort为 -1 &#xff0c;则不监听 telnet端口。如果配置 arthas.telnetPort为 0 &#xff0c;则随机telnet端口。arthas.httpPort类似。






推荐阅读
author-avatar
张琇萍家云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有