Java 弹簧启动执行器指标mem和mem.free
在通过/metrics端点公开的Spring引导度量中mem和mem.free的含义是什么 我们正在对部署在三个节点上的新Spring Boot微服务进行负载测试,mem在虚拟机的4G总容量中,每个盒子的容量总是在250M左右,mem.free在不现实的负载下,比如100倍的正常负载可以下降到15M,并在测试后缓慢恢复 它们不是堆内存,因为Spring引导指标单独报告它们,它们不是Java进程本身,因为从命令行我可以看到,无论负载有多大,它都保持在4G的16%,即大约900MB。以下是/metrics呼叫响应片段:Java 弹簧启动执行器指标mem和mem.free,java,spring-boot,Java,Spring Boot,在通过/metrics端点公开的Spring引导度量中mem和mem.free的含义是什么 我们正在对部署在三个节点上的新Spring Boot微服务进行负载测试,mem在虚拟机的4G总容量中,每个盒子的容量总是在250M左右,mem.free在不现实的负载下,比如100倍的正常负载可以下降到15M,并在测试后缓慢恢复 它们不是堆内存,因为Spring引导指标单独报告它们,它们不是Java进程本身,因为从命令行我可以看到,无论负载有多大,它都保持在4G的16%,即大约900MB。以下是/metr
{
mem: 227657,
mem.free: 44280,
processors: 2,
instance.uptime: 80393579,
uptime: 80414405,
systemload.average: 0.03,
heap.committed: 133632,
heap.init: 61440,
heap.used: 89351,
heap: 872448,
nonheap.committed: 96688,
nonheap.init: 2496,
nonheap.used: 94025,
nonheap: 0,
threads.peak: 109,
threads.daemon: 34,
threads.totalStarted: 183,
threads: 63,
classes: 10079,
classes.loaded: 10155,
classes.unloaded: 76,
。。。。
}
Grafanamem.free过去24小时的屏幕截图,最低点是在高负载测试期间(15MB!)
Grafana的cpu和内存使用情况报告如下所示,它告诉我cpu在这段时间内压力不足,这是可以理解的。但是Java进程内存(只有一个Spring启动在该框中运行)是稳定的:
那么在Spring Boot metrics中mem和mem.free的含义又是什么呢?
mem
是JVM当前使用的内存总量。它是两个值的总和:
- 来自的
的值getUsed()
mem.free
是JVM可用的内存量。它是一个单一的值:
要了解更多详细信息,请查看Spring Boot的课程。谢谢。这是非常清楚的解释。现在我可以看到mem(227657)=mem.free(44280)+heap.used(89351)+nonheap.used(94025)我还可以在这些框中找到默认的JVM InitialHeapSize=31457280,它非常小,甚至不足以容纳类(94025000)。当我设置-Xms=256m时,mem变成321136,mem.free增加到169665,这很好。需要添加的是(与JVM相反),执行器以KB而不是字节报告这些数字: