Elasticsearch实例在具有32个核心CPU和120gb内存的VM上运行。
我在调试性能问题时发现htop
的结果
jstat结果
jstat -gc 11660
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
195904.0 195904.0 0.0 30111.4 1567680.0 1146433.0 59906496.0 1432277.9 73684.0 63888.5 0.0 0.0 2122077 150951.979 6 0.837 150952.816
对于Java进程,-Xms2g
和-Xmx2g
设置是清晰可见的。
这怎么可能?内存使用率如何超出-Xmx2g
?
答案 0 :(得分:3)
top和htop没有显示的是JVM堆的级别,它与Java进程消耗的总物理内存不同。
在下面,Lucene会将索引段文件直接映射到内存中,而无需利用堆。因此,在您的Java流程中,Elasticsearch本身可能会利用2GB的堆,但是底层的Lucene库可能会消耗更多的内存,具体取决于需要加载到内存中的段的大小。
关于同一主题的另一个答案:https://stackoverflow.com/a/35232221/4604579