elasticsearch对于内存使用的一个小疑惑
匿名 | 发布于2017年12月28日 | 阅读数:5760
不太理解elasticsearch 利用操作系统缓存,是利用的哪部分空间
文档中经常看到这样的描述
https://www.elastic.co/guide/c ... .html
例如这里提到的:
在Elasticsearch和磁盘之间是文件系统缓存。 像之前描述的一样, 在内存索引缓冲区( 图 19 “在内存缓冲区中包含了新文档的 Lucene 索引” )中的文档会被写入到一个新的段中( 图 20 “缓冲区的内容已经被写入一个可被搜索的段中,但还没有进行提交” )。 但是这里新段会被先写入到文件系统缓存--这一步代价会比较低,稍后再被刷新到磁盘--这一步代价比较高。不过只要文件已经在缓存中, 就可以像其它文件一样被打开和读取了。
还有文章经常指出,elasticsearch 要预留一半的内存空间,es会充分利用操作系统缓存。
但是缓存指的不是cpu里面的一级二级三级缓存么?上述提到的文件系统缓存肯定不是它,应该就是内存吧,只不过不在JVM中管理,属于非堆? 类似使用ByteBuffer.allocDirect 吗?
文档中经常看到这样的描述
https://www.elastic.co/guide/c ... .html
例如这里提到的:
在Elasticsearch和磁盘之间是文件系统缓存。 像之前描述的一样, 在内存索引缓冲区( 图 19 “在内存缓冲区中包含了新文档的 Lucene 索引” )中的文档会被写入到一个新的段中( 图 20 “缓冲区的内容已经被写入一个可被搜索的段中,但还没有进行提交” )。 但是这里新段会被先写入到文件系统缓存--这一步代价会比较低,稍后再被刷新到磁盘--这一步代价比较高。不过只要文件已经在缓存中, 就可以像其它文件一样被打开和读取了。
还有文章经常指出,elasticsearch 要预留一半的内存空间,es会充分利用操作系统缓存。
但是缓存指的不是cpu里面的一级二级三级缓存么?上述提到的文件系统缓存肯定不是它,应该就是内存吧,只不过不在JVM中管理,属于非堆? 类似使用ByteBuffer.allocDirect 吗?
2 个回复
kennywu76 - Wood
赞同来自: code4j 、kurisu 、白衬衣
hapjin
赞同来自: