ElasticSearch和Lucene如何共享内存

我对ES官方文档中的以下配额有一个疑问:

But if you give all available memory to Elasticsearch’s heap, 

there won’t be any left over for Lucene.

This can seriously impact the performance of full-text search.

如果服务器具有80G内存,则发出以下命令以启动ES节点:bin/elasticsearch -xmx 30g

这意味着我只给ES进程提供最大30g内存。Lucene如何使用剩余的50G,因为Lucene在ES流程中运行,所以这只是流程的一部分。

回答:

Xmx参数仅指示您为ES Java进程分配了多少 。但是,将RAM分配给堆并不是使用服务器上可用内存的唯一方法。

Lucene确实在ES进程中运行,但是Lucene不仅利用分配的堆,而且还通过大量利用文件系统缓存来管理索引段文件来使用内存。

Lucene的主要提交者有这两篇很棒的博客文章(这一篇和另一篇),它们更详细地解释了Lucene如何利用所有可用的剩余内存。

最重要的是(使用-Xmx30g)为ES进程分配了30GB的堆,然后Lucene会很乐意消耗剩下的东西来做需要做的事情。

以上是 ElasticSearch和Lucene如何共享内存 的全部内容, 来源链接: utcz.com/qa/403896.html

回到顶部