ipmitool查看内存信息_JVM 监控以及内存分析

f9cc77d7a98df10a861c7b434b8ca504.png

Java 语言,开发者不能直接控制程序运行内存,对象的创建都是由类加载器一步步解析,执行与生成与内存区域中的;并且 jvm 有自己的垃圾回收器对内存区域管理、回收;但是我们已经可以通过一些工具来在程序运行时查看对应的 jvm 内存使用情况,帮助更好的分析与优化我们的代码。

查看系统里 java 进程信息

1d1edd8ad6acd6809f6027d8b422a09e.png

jmap -histo

查看类的内存占用

ec7429dc8c29ed73b417b003cd0f5870.png

class name 解读

B 代表 byte

C 代表 char

D 代表 double

F 代表 float

I 代表 int

J 代表 long

Z 代表 boolean

前边有 [代表数组,[I 就相当于 int[]

对象用 [L + 类名表示

如果某个类的个数特别多, 就得检查是否内存溢出了。

jmap -heap

804cd4a95e3c61fe9e5bff94df1e228c.png

MaxHeapFreeRatio: GC 后如果发现空闲堆内存占到整个预估堆内

监控和系统性能分析中,**`space utilization`(空间利用率)** 和 **`disk utilization`(磁盘利用率)** 是两个不同的概念,虽然它们都与磁盘有关,但含义和用途不同。 --- ### ✅ `space utilization`(空间利用率) - **定义**:指的是文件系统中已使用存储空间占总空间的比例,通常通过 `df -h` 命令查看。 - **单位**:百分比(%) - **监控对象**:文件系统层级(如 `/data`、`/home` 等) - **用途**:判断磁盘是否快满,是否需要扩容或清理。 - **示例**: ```bash df -h /data ``` 输出: ``` /dev/mapper/vg_data-lv_data 100G 74G 26G 74% /data ``` 这里的 74% 就是 space utilization。 --- ### ✅ `disk utilization`(磁盘利用率) - **定义**:指的是磁盘设备的 I/O 使用率,即磁盘忙于处理 I/O 请求的时间占比。 - **单位**:百分比(%) - **监控对象**:物理磁盘或逻辑块设备(如 `/dev/sdb`、`/dev/mapper/xxx`) - **用途**:判断磁盘是否过载,是否存在 I/O 瓶颈。 - **示例指标(Prometheus)**: ```promql rate(node_disk_io_time_seconds_total[1m]) ``` 这个指标表示磁盘 I/O 时间占比,常用于监控磁盘繁忙程度。 --- ### 📌 为什么你看到的 `space utilization` 是对的,而 `disk utilization` 不一致? - 因为 `space utilization` 反映的是文件系统中空间的使用情况,是你在 `df` 命令中看到的结果,它和挂载点绑定。 - `disk utilization` 反映的是底层设备的 I/O 负载情况,和当前挂载点无直接关系,可能监控的是物理盘或其它设备。 --- ### ✅ 举例说明 | 指标类型 | 查看方式 | 指标含义 | 你看到的值 | |----------|----------|-----------|-------------| | `space utilization` | `df -h` 或 Prometheus 的 `node_filesystem_*` 指标 | 磁盘空间使用率 | 74%(正确) | | `disk utilization` | `iostat -xmt 1` 或 Prometheus 的 `node_disk_io_time_seconds_total` | 磁盘 I/O 利用率 | 2%(可能监控了错误设备) | --- ### ✅ 如何在 Prometheus/Grafana 中正确查看这两个指标? #### 1. **查看空间利用率(space utilization)** ```promql (node_filesystem_size_bytes{mountpoint="/data"} - node_filesystem_free_bytes{mountpoint="/data"}) / node_filesystem_size_bytes{mountpoint="/data"} * 100 ``` #### 2. **查看磁盘 I/O 利用率(disk utilization)** ```promql rate(node_disk_io_time_seconds_total{device="dm-0"}[1m]) * 100 ``` > 注意:`device` 应该对应你实际使用的逻辑卷设备名(如 `/dev/mapper/vg_data-lv_data` 对应的 `dm-0`)。 --- ### ✅ 总结对比表 | 特性 | Space Utilization | Disk Utilization | |------|--------------------|------------------| | 含义 | 空间使用率 | 磁盘 I/O 使用率 | | 查看方式 | `df -h`、Prometheus 的 `node_filesystem_*` | `iostat`、Prometheus 的 `node_disk_io_time_seconds_total` | | 监控对象 | 挂载点(如 `/data`) | 块设备(如 `/dev/sdb`、`dm-0`) | | 单位 | % | % | | 用途 | 判断磁盘是否快满 | 判断磁盘是否 I/O 瓶颈 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值