当前位置: 首页 > news >正文

阿里云-arms监控

监控java应用

若是容器集群环境,则选择容器服务环境

手动安装方式,是手动把 agent的jar包放到 ecs服务器,然后运行个人的spring boot服务时,加上一些参数,将agent也启动运行

手动集成-添加agent

监控的是ecs中的java应用,因此要将agent下载到ecs中

添加unzip指令集,并解压缩

在ecs中启动服务

java -javaagent:/home/admin/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey=dnnlqal****** -Darms.appName=my-service -jar arms-0.0.1-SNAPSHOT.jar

 /home/admin  是agent在ecs中的实际路径

最后的  -jar *.jar & 是启动的自己的java服务jar包

启动

集成的效果

接口调用

JVM监控

线程池监控

限制:仅支持部分框架

持续性能刨析

作用:分析内存占用、接口cpu耗时函数

解决内存占用异常问题

线程池组:先看下各个线程池组的内存占比,找到业务中的线程池(本图的内存占用 arms的agent占用最多,但是我们不用分析,因此不选。。现实场景,自己的业务占用的内存占绝大多数)

可以一个个的线程池组分析、也可以先多选几个一块分析

现实模式:使用表格+火焰的形式。

从下往上找,自己业务的最宽的方法,就是导致占用内存较多的原因。

org.draymond.arms.ArmsThreadTest.extracted(String)

 在代码中找到对应的位置,然后分析原因

解决接口慢问题

trace + 火焰图

1.通过trace先定位哪个接口慢

找到一个慢的traceId

详情里面有各个span的耗时(因为我只开了一个服务,也没有手动添加span,所以没有其他span了)

不足:该接口内部的逻辑,不确定哪个地方是卡点

但是使用 “代码整体执行时间火焰图” 辅助分析

从trace中找到慢的 服务 与 慢方法

搜索自己业务的路径

arms/byte/id

调用关系:

org.draymond.arms.ArmsController.bytesTest(Integer)

org.draymond.arms.ArmsService.bytesTest(Integer)

org.draymond.arms.ArmsService.sleepNumberTime(Integer)

入口:.ArmsController.bytesTest 花费  7.15 m, 占比49%

最耗时方法:ArmsService.sleepNumberTime

定位:最根本的是 sleepNumberTime 的sleep占用了大量时间。

解决CPU不稳定问题

解决GC频繁问题

相关文章:

  • Unity2D 街机风太空射击游戏 学习记录 #16 道具父类提取 旋涡道具
  • CompletableFuture 深度解析
  • 阿里 Qwen3 模型更新,吉卜力风格get
  • 开疆智能CCLinkIE转ModbusTCP网关连接傲博机器人配置案例
  • 领域驱动设计(DDD)【23】之泛化:从概念到实践
  • 永磁同步电机无速度算法--基于增强型正交PLL的滑模观测器
  • MySQL之MVCC实现原理深度解析
  • 印度和澳洲的地理因素
  • 用鸿蒙打造真正的跨设备数据库:从零实现分布式存储
  • linux安装vscode
  • 求区间最大值
  • 从OCR瓶颈到结构化理解来有效提升RAG的效果
  • 趣味数据结构之——数组
  • spring07-JdbcTemplate操作数据库
  • JSON简介及其应用
  • Geollama 辅助笔记:raw_to_prompt_strings_geo.py
  • 编程江湖-左右互博术(多线程,多进程)
  • [Linux]信号入门
  • 【企业管理】利益分配
  • 《高等数学》(同济大学·第7版)第十章 重积分第三节三重积分