springboot Actuator 指标分析

http.server.requests

HTTP 接口性能瓶颈	http.server.requests.max + system.cpu.usage	代码热点分析或横向扩容
核心接口性能指标,包含以下维度:
count:请求总数
max/sum:最大及总响应时间
status:HTTP 状态码分布(如 5xx 错误率)
应用场景:识别高延迟接口或异常请求激增。

/metrics/http.server.requests?tag=uri:xxx

指定URL分析

jvm.buffer.count

当前缓冲区数量(Direct/Mapped),监控堆外内存使用。
​作用:统计 JVM 缓冲区(如 Direct Buffer 和 Mapped Buffer)的数量。
​应用场景:监控堆外内存使用情况,排查 NIO 操作中的缓冲区泄漏问题。
Direct	网络传输、大文件读写	减少堆内外数据拷贝,提升 I/O 性能	堆外内存泄漏(需监控 jvm.buffer.memory.used 是否持续增长)
​Mapped	数据库文件操作、日志持久化	文件直接映射内存,避免磁盘频繁读写	未关闭 FileChannel 导致虚拟内存耗尽或文件锁冲突
​**direct 缓冲区泄漏**:若 direct 类型数量持续增加且不释放,可能引发 OutOfMemoryError: Direct buffer memory。
​**mapped 缓冲区未关闭**:可能导致系统虚拟内存占用过高,甚至影响其他进程。
​**jvm.buffer.memory.used**:缓冲区占用的内存大小(需区分 direct 和 mapped)。
​**process.resident_memory**:进程总内存使用量,辅助判断堆外内存泄漏。

jvm.buffer.memory.used

缓冲区内存占用
​作用:记录当前缓冲区实际占用的内存大小(单位:字节)。
​示例:若该值持续增长,可能因未正确释放 DirectByteBuffer 导致内存溢出。

jvm.buffer.total.capacity

​作用:显示所有缓冲区的总容量上限。
​关联分析:与 jvm.buffer.memory.used 对比,判断缓冲区利用率是否合理。
缓冲区总容量,结合 jvm.buffer.memory.used 分析利用率。

jvm.classes.loaded

​作用:统计 JVM 已加载的类数量,反映应用运行时的类加载动态。
​典型问题:类加载数异常增长可能由重复加载或类加载器泄漏引起。
类加载异常	jvm.classes.loaded/unloaded	结合 JVM 分析工具(如 JProfiler)
已加载/卸载的类数量,异常值可能暗示类加载器泄漏或动态代理滥用。

jvm.classes.unloaded

​作用:记录 JVM 生命周期内已卸载的类总数。
​意义:正常情况下卸载数较低,频繁卸载可能影响性能(如热部署场景)。
已加载/卸载的类数量,异常值可能暗示类加载器泄漏或动态代理滥用。

jvm.gc.live.data.size

老年代存活数据大小(反映内存碎片情况)

jvm.gc.max.data.size

​功能:垃圾回收管理的最大内存区域容量(例如老年代最大空间)。
​分析:若 jvm.memory.used 持续接近此值,可能触发频繁 Full GC,需优化对象生命周期或扩容堆内存。
​场景:结合 jvm.gc.pause 判断是否因内存不足导致 GC 效率下降。

jvm.gc.memory.allocated

GC 期间分配的内存总量
Young GC 时年轻代分配的内存空间,反映对象创建速率。

jvm.gc.memory.promoted

Young GC 后晋升到老年代的内存大小,用于分析对象生命周期合理性。
显示 Young GC 后晋升到老年代的内存大小,用于分析对象生命周期

jvm.gc.pause

内存泄漏	jvm.memory.used + jvm.gc.pause	分析堆内存增长与 Full GC 频率
GC 耗时(jvm.gc.pause)及堆内存分配情况
GC 暂停时间(用于分析垃圾回收效率)
GC 暂停时间,衡量垃圾回收效率(如频繁 Full GC 可能引发性能问题)。
​**Allocation Failure**:内存分配失败(常见于年轻代空间不足时触发Minor GC)。
​**end of minor GC**:年轻代GC(Minor GC)结束。
​**end of major GC**:老年代GC(Major/Full GC)结束。

jvm.memory.committed

已提交内存量(JVM 向操作系统申请的物理内存),反映实际资源占用。

jvm.memory.max

查看 JVM 最大内存
JVM 最大可用内存
JVM 可分配的最大内存,对比 used 可计算内存利用率。

jvm.memory.used

当前 JVM 内存使用量(堆/非堆)
内存泄漏	jvm.memory.used + jvm.gc.pause	分析堆内存增长与 Full GC 频率
当前 JVM 内存使用量(堆/非堆),用于实时监控内存泄漏或溢出风险。
示例:若堆内存持续增长且无下降趋势,可能存在内存泄漏。

jvm.threads.daemon

​功能:当前 JVM 守护线程数量(如垃圾回收线程)。
​分析:若守护线程数异常增加(如远高于默认值),可能因线程池配置错误或框架内部泄漏。
​场景:对比 jvm.threads.live 分析线程总数是否合理。

jvm.threads.live

当前活跃线程数(排查线程泄漏)
结合 jvm.threads.live 和 tomcat.threads.busy 诊断线程阻塞问题
高并发性能瓶颈	jvm.threads.live、system.cpu.usage	检测线程阻塞或 CPU 过载
当前活跃线程数,突增可能因线程泄漏或任务阻塞。
高并发线程阻塞	jvm.threads.live + jvm.threads.states	优化锁机制或线程池配置

jvm.threads.peak

历史峰值线程数

jvm.threads.states

按状态(BLOCKED、WAITING 等)分类的线程数量
​作用:按线程状态(如 BLOCKED、WAITING、RUNNABLE)分类统计线程数量。
​排查场景:
BLOCKED 线程过多:可能由锁竞争或同步瓶颈导致。
WAITING 线程堆积:常见于任务队列处理能力不足。
按状态(BLOCKED/WAITING/RUNNABLE)统计线程数,排查锁竞争或任务队列积压。
高并发线程阻塞	jvm.threads.live + jvm.threads.states	优化锁机制或线程池配置

logback.events

记录 Logback 日志事件数量(如 INFO/WARN/ERROR 级别日志统计)
​作用:统计 Logback 日志框架输出的不同级别日志事件数量(如 INFO、WARN、ERROR)。
​配置:需依赖 micrometer-core 和 Logback 集成,自动记录日志频率。
​示例:监控 ERROR 级别日志的突发增长,触发告警机制。
日志级别统计(INFO/WARN/ERROR),监控日志风暴或异常频率。

process.cpu.usage

当前进程 CPU 占用
当前进程 CPU 占用,结合线程指标分析热点代码。

process.files.max

​功能:操作系统允许进程打开的最大文件句柄数。
​分析:若 process.files.open 接近此值,可能导致 "Too many open files" 错误,需调整系统限制(ulimit)或检查文件泄漏。

process.files.open

​功能:当前进程已打开的文件句柄数(包括 Socket、日志文件等)。
​分析:持续增长可能因未正确关闭资源(如数据库连接、流未释放)。
process.files.open	process.files.max	process.files.open / process.files.max > 0.8

process.start.time

进程启动时间戳
​作用:记录应用进程启动的时间戳(Unix 时间戳格式)。
​用途:用于计算应用运行时长,或与其他时间序列数据关联分析。
启动时间戳,用于计算运行周期。

process.uptime

应用运行时长(秒)
​作用:显示应用已运行的时长(单位:秒)。
​示例:结合告警系统,监控长时间运行的进程是否存在内存泄漏。
应用持续运行时间,长期运行需关注内存泄漏。

system.cpu.count

CPU 核心数,用于资源扩容决策。
CPU 核心数(用于资源规划)

system.cpu.usage

系统整体 CPU 使用率
高并发性能瓶颈	jvm.threads.live、system.cpu.usage	检测线程阻塞或 CPU 过载
系统整体 CPU 使用率,超 80% 需警惕资源瓶颈。
HTTP 接口性能瓶颈	http.server.requests.max + system.cpu.usage	代码热点分析或横向扩容

system.load.average.1m

​功能:系统过去 1 分钟的平均负载(单位:核心数占比)。
​分析:
负载值 > CPU 核心数表示系统过载。
若负载高但 system.cpu.usage 低,可能因 I/O 阻塞或锁竞争。
​场景:结合 jvm.threads.states 判断是否因线程阻塞导致负载堆积。
system.load.average.1m	system.cpu.usage	system.load.average.1m > (system.cpu.count * 2)

tomcat.sessions.active.current

活跃会话数
当前活跃会话数
当前活跃会话数,评估用户并发量。

tomcat.sessions.active.max

功能:历史活跃会话数的峰值。
​分析:对比当前活跃会话数(tomcat.sessions.active.current),评估系统承载能力是否需扩容。

tomcat.sessions.alive.max

​作用:统计会话存活时间的最大值,反映用户会话的活跃程度。
​优化建议:若该值过高,需检查会话超时配置是否合理。

tomcat.sessions.created

​功能:自应用启动以来创建的会话总数。
​分析:
高频会话创建(如每秒数百次)可能因无 Session 复用(如未设置 Cookie)或遭受攻击。
结合 tomcat.sessions.expired 优化会话超时时间。

tomcat.sessions.expired

过期会话数(用于会话超时配置优化)
过期会话数,优化会话超时配置。

tomcat.sessions.rejected

因超出最大限制被拒绝的会话数
Tomcat 会话管理	tomcat.sessions.rejected	调整 server.tomcat.max-sessions 配置
​作用:记录因超出 Tomcat 最大会话数限制而被拒绝创建的会话数量。
​调优方向:调整 server.tomcat.max-sessions 参数或优化会话管理策略。
Tomcat 会话过载	tomcat.sessions.rejected	调整 max-sessions 参数
因超出最大会话数被拒绝的请求数,需调整 server.tomcat.max-sessions。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/37086.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【redis】什么是持久化之 RDB

什么是持久化 MySQL 的事务,有四个比较核心的特性: 原子性一致性持久性>持久化(说的一回事) 把数据存储在硬盘上>持久把数据存在内存上>不持久重启进程/重启主机之后,数据是否还存在 隔离性 Redis 是一个内存…

Python、MATLAB和PPT完成数学建模竞赛中的地图绘制

参加数学建模比赛时,很多题目——诸如统计类、数据挖掘类、环保类、建议类的题目总会涉及到地理相关的情景,往往要求我们制作与地图相关的可视化内容。如下图,这是21年亚太赛的那道塞罕坝的题目,期间涉及到温度、降水和森林覆盖率…

Python(冒泡排序、选择排序、插入法排序、快速排序,算法稳定性)

算法的稳定性 冒泡排序 # 冒泡排序 # 1 思想: 相邻位置两个元素比较, 前面的元素比后面的元素大则交换, 把最大的数给找到 # 经过一轮一轮的比较最终把序列给排序 # 2 关键点1: 两层for循环 外层循环控制多少轮 内层for循环控制比较次数 # 3 关键点2: 若遍历一遍没有数字…

【自用】NLP算法面经(5)

一、L1、L2正则化 正则化是机器学习中用于防止过拟合并提高模型泛化能力的技术。当模型过拟合时,它已经很好地学习了训练数据,甚至是训练数据中的噪声,所以可能无法在新的、未见过的数据上表现良好。 比如: 其中,x1和…

PyCharm安装redis,python安装redis,PyCharm使用失败问题

报错信息 Usage: D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] -r [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip instal…

学习笔记|arduino uno r3|DS1307时钟芯片|Atmega328P| 设置时间|读取时间|无源晶振:DS1307时钟芯片实验

目录 芯片pinout: 实验器件: 实验连线 解决AVR 架构不支持 printf() 方法 使用GetTimeAndDate.ino设置时间: 使用SetTimeAndDate.ino设置时间: 芯片pinout: DS1307 是美国 DALLAS 公司推出的 I 总线接口实时时钟芯…

uniapp可拖拽消息数徽标draggable-badge,仿手机qq聊天列表未读数徽标动效

组件下载地址:https://ext.dcloud.net.cn/plugin?id22679 兼容性: 测试了h5和微信小程序,理论支持全平台,暂不支持pc端,不过可以自己修改事件兼容pc 使用uniapp仿写了一个手机qq聊天列表右侧未读数的徽标组件&#x…

【设计模式】策略模式

以下是格式优化后的Markdown文档,仅调整代码缩进,保持内容不变: 四、策略模式 策略(Strategy) 模式是一种行为型模式,其实现过程与模板方法模式非常类似——都 是以扩展的方式支持未来的变化。本章通过对一个具体范例的逐步重构…

STM32配套程序接线图

1 工程模板 2 LED闪烁 3LED流水灯 4蜂鸣器 5按键控制LED 6光敏传感器控制蜂鸣器 7OLED显示屏 8对射式红外传感器计次 9旋转编码器计次 10 定时器定时中断 11定时器外部时钟 12PWM驱动LED呼吸灯 13 PWM驱动舵机 14 PWM驱动直流电机 15输入捕获模式测频率 16PWMI模式测频率占空…

【C语言】使用结构体实现位段

一、位段 前面我们学习了结构体,位段的声明和结构体是一样的,其区别如下: 1、位段的成员必须是int 、unsigned int 、signed int 、在C99中位段的成员的类型也可以选择其他类型。 2、位段的成员名后边有一个冒号和一个数字 如下&#xff…

【大模型系列篇】硅基智能开源数字人模型HeyGem.ai,开启数字人时刻

硅基智能开源数字人模型HeyGem.ai, 1秒克隆生成4K视频, 支持离线多语言, 开源72小时狂揽1.3k星, 目前已经获得3.4k星。 硅基智能正式宣布在GitHub开源全球TOP级数字人模型,同时发布基于该模型的同名数字人工具硅基数字人克隆的本地安装包,这一举措标志着…

【C++】STL库面试常问点

STL库 什么是STL库 C标准模板库(Standard Template Libiary)基于泛型编程(模板),实现常见的数据结构和算法,提升代码的复用性和效率。 STL库有哪些组件 STL库由以下组件构成: ● 容器&#xf…

knowledge-微前端(多个前端应用聚合的一个应用架构体系,每个小的应用可独立运行,独立开发,独立部署上线)

1.前言 微前端,将一个大的前端应用拆分为多个小型的,独立开发的前端应用,每一个小型的应用都可以单独的开发,部署和运行。这种结构允许不同的团队使用不同的技术栈来开发应用的不同部分,提高开发的效率与灵活性。 2.实…

三格电子PLC数据采集网关-工业互联的智能枢纽

在工业自动化领域,设备间的数据互通与协议兼容是核心挑战之一。三格电子推出的PLC据采集网关SG-PLC-Private,凭借其多协议兼容、高稳定性和灵活配置能力,成为工业物联网(IIoT)中实现设备互联的关键设备。本文将从产品功…

鸿蒙NEXT项目实战-百得知识库05

代码仓地址,大家记得点个star IbestKnowTeach: 百得知识库基于鸿蒙NEXT稳定版实现的一款企业级开发项目案例。 本案例涉及到多个鸿蒙相关技术知识点: 1、布局 2、配置文件 3、组件的封装和使用 4、路由的使用 5、请求响应拦截器的封装 6、位置服务 7、三…

leetcode热题100道——字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "nat", &…

【Vue3】01-vue3的基础 + ref reactive

首先确保已经有了ES6的基础 本文介绍 vue 的基础使用以及 两种响应数据的方式。 目录 1. 创建一个vue应用程序 2. Vue模块化开发 3. ref 和 reactive 的区别 1. 创建一个vue应用程序 所需的两个文件: https://unpkg.com/vue3/dist/vue.global.js https://un…

Linux中的selinux,磁盘管理

一、selinux 作用:通过对软件进程限制某些权限,从而保证系统的安全。通过上下文类型和设定好的上下文类型是否一致。如果一致,那么软件就可以完成后续的操作,例如访问文件中数据,或者让数据通过某个端口。做好个人防护…

Linux应用:Linux的信号

什么是信号 信号是一种软件中断,用于通知进程系统中发生了某种特定事件。它是操作系统与进程之间,以及进程与进程之间进行异步通信的一种方式。在 Linux 系统中,信号是一种比较简单的进程间通信机制。当一个信号产生时,内核会通过…

Linux笔记之Ubuntu22.04安装IBus中文输入法教程

Linux笔记之Ubuntu22.04安装IBus中文输入法教程 code review! 文章目录 Linux笔记之Ubuntu22.04安装IBus中文输入法教程安装 IBus 并配置中文输入法步骤 1: 安装 IBus 和拼音插件步骤 2: 设置 IBus 为默认输入法框架步骤 3: 重启会话步骤 4: 添加中文输入法步骤 5: …