我正在使用官方的elasticsearch docker图片。由于ES需要一定级别的内存映射区域(如documented),我使用
增加了它docker-machine ssh <NAME> sudo sysctl -w vm.max_map_count=262144
我还读到here分配的内存应该占系统内存总量的50%左右。
我很困惑这两个人如何一起玩。如何分配更多内存映射区域会影响分配的RAM。它是RAM的一部分,还是高于弹性搜索的RAM分配?
答案 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可以通过尽可能多地使用剩余内存来实现爆炸的混合物。