2016-02-12 131 views
3

什麼是MEMmem.free在春季啓動指標的含義通過/度端點暴露?春季啓動器指標MEM和mem.free

我們部署在三個節點,一個新的Spring引導微服務,MEM每盒的負載測試是始終圍繞250M出來4G總在VM中,mem.free像正常負荷的100倍不切實際的負荷下可以降至15M,並在測試後緩慢恢復。

它們不是堆內存,因爲Spring Boot Metrics分別報告它們,它們不是Java進程本身,因爲從命令行我可以看到無論負載有多大,它都停留在4G的16%左右,大約爲900MB。下面是/指標呼叫響應片段:

{ 
    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, 

.... }

Grafana mem.free截圖過去24小時,最低點是高負載測試期間(15MB!) enter image description here

格拉法納cpu和內存使用情況報告如下所示,它告訴我在這段時間內處於壓力下的CPU是可以理解的。但是,Java進程的內存(僅1春天開機在機器上運行)穩定: enter image description here

那麼什麼又是MEMmem.free在春季啓動指標的含義是什麼?

回答

12

mem是JVM當前使用的總內存量。這兩個值的總和:

的值是內存的可用到JVM量。這是一個單值:

看到更多的細節,看看春天啓動的SystemPublicMetrics類。

+1

謝謝。這是非常明確的解釋。現在我可以看到mem(227657)= mem.free(44280)+ heap.used(89351)+ nonheap.used(94025) – MichaelYu

+0

我也在這些盒子裏發現默認的JVM InitialHeapSize = 31457280,它非常小而且不均勻足夠的類(94025000)。當我設置-Xms = 256m時,mem變爲321136,mem.free增加到169665,這很好。 – MichaelYu