elasticsearch - max_map_count vs堆大小

时间:2016-11-29 11:50:04

标签: memory elasticsearch

我正在使用官方的elasticsearch docker图片。由于ES需要一定级别的内存映射区域(如documented),我使用

增加了它
docker-machine ssh <NAME> sudo sysctl -w vm.max_map_count=262144

我还读到here分配的内存应该占系统内存总量的50%左右。

我很困惑这两个人如何一起玩。如何分配更多内存映射区域会影响分配的RAM。它是RAM的一部分,还是高于弹性搜索的RAM分配?

1 个答案:

答案 0 :(得分:1)

总而言之,只有Elasticsearch才会使用堆,而Lucene将使用剩余的内存将索引文件直接映射到内存中,以便快速访问。

这就是为什么最好的做法是将一半的内存分配给ES堆以让剩下的一半留给Lucene的主要原因。但是,对{ES}堆not allocate more than 32-ish GB of RAM也是另一种最佳做法(有时它甚至是less than 30B)。

所以,如果你有一台拥有128GB内存的机器,你就不会为ES分配64GB,但仍然最多可以分配32英寸GB,而Lucene会高兴地吞噬所有剩余的96GB内存以映射其索引文件

调整内存设置是为ES提供足够的内存(但不是太多)并确保Lucene可以通过尽可能多地使用剩余内存来实现爆炸的混合物。