-Xms8g -Xmx8g
50%
,因为 Elasticsearch 在堆内存之外还需要将内存用于其他。例如 Elasticsearch 需要利用堆外内存来进行网络通信,依赖操作系统的文件系统缓存来有效访问文件,而JVM本身也需要一些内存。 32 GB
,在大多数情况下 26 GB
是安全的。 $ bin/elasticsearch heap size [1.9gb], compressed ordinary object pointers [true]
# 32 G,false 表示超过了阈值 $ java -Xmx32768m -XX:+PrintFlagsFinal 2> /dev/null | grep UseCompressedOops bool UseCompressedOops = false {lp64_product} # 31G,true 表示在阈值之内 $ java -Xmx31744m -XX:+PrintFlagsFinal 2> /dev/null | grep UseCompressedOops bool UseCompressedOops := true {lp64_product}
# 公式 heapSize = math.floor(RAM/2) # 物理内存的 50% 下取整 if heapSize > threshold: # 如果大于阈值,则设为等于(或略小于阈值大小) heapSize = threshold
# 例一 # 物理内存 128G,CompressedOops 阈值为 31 G # 建议启动两个实例,堆内存大小设为 31G
# 例二(最佳实践) # 物理内存 64G,CompressedOops 阈值为 31 G # 建议启动一个实例,堆内存大小设为 31G
# 例三 # 物理内存 32G,CompressedOops 阈值为 31 G # 建议启动一个实例,堆内存大小设为 16G
本文出自qbit snap