绊脚石乃是进身之阶。

关于es内存使用的的一些疑问

Elasticsearch | 作者 yqbboy | 发布于2022年05月20日 | 阅读数:1233

最近在做es性能优化,发现es会充分自身分配的JVM内存以及操作系统内存,但是没有搞清楚es会把哪些东西放在JVM中,哪些又放到操作系统内存呢?
哪位大神能说明一下?最好基于6.0之后的版本解答一下,谢谢
已邀请:

liujiacheng

赞同来自:

堆内:
1,ES在读、写等过程中产生的临时对象都存在JVM中,这部分会在GC的时候进行回收,如附件中的JVM Heap
2,ES为了提高性能,内部做了许多的缓存,这部分缓存也存在JVM中,但是GC无法回收,只能通过POST _cache/clear或者缓存的LRU算法回收,这部分数据包括:Node Query Cache、Field Data、Shared Query Cache等,如附件中的Index Memory - Elasticsearch
3,lucence也会占用一部分的JVM,如附件中的Index Memory - Lucence
 
堆外:
ES是一个IO密集型应用,既会对磁盘不断的进行读写,需要许多的堆外空间既操作系统需要的内存。
 
一般来说,物理内存一半给JVM(但是最好不要超过32gb)、一半留给操作系统。
 

要回复问题请先登录注册