elasticsearch的Java Heap Size設定大於32G對效能的影響因素列舉

chenfeng發表於2018-09-10
  1. 觸發JVM的臨界值,最佳化策略Compressed OOPS失效(之前Heap Size在[4G~32G]區間內採用此最佳化)

  2. 由於最佳化策略失效,同時堆記憶體>32G,所以JVM被迫使用8位元組(64位)來對Java物件定址(之前4位元組(32位)就夠了)

  3. 通常64位JVM消耗的記憶體會比32位的大1.5倍,這是因為物件指標在64位架構下,長度會翻倍(事實上當記憶體到達40-50GB的時候,有效記憶體才相當於使用Compressed OOPS技術時候的32G記憶體)

  4. 更大的指標在主記憶體和快取器(例如LLC, L1等)之間移動資料的時候,會佔用更多的頻寬(參考文獻[1]中表示很糟糕)

  5. 讓JVM的GC面臨更大壓力的指標物件(在實際應用中構建大於12-16G的堆時,若無很好的效能調優與測評,你很容易就會引起一個耗時數分鐘的完全GC)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2213889/,如需轉載,請註明出處,否則將追究法律責任。

相關文章