memory - elasticsearch - max_map_count 与堆大小

标签 memory elasticsearch

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

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

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

我对这两个如何一起玩感到困惑。分配更多内存映射区域如何影响分配的 RAM。它是 RAM 的一部分,还是高于 Elasticsearch 的 RAM 分配?

最佳答案

总而言之,堆仅由 Elasticsearch 使用,Lucene 将使用其余内存将索引文件直接映射到内存中,以实现极快的访问。

这就是为什么最佳实践是将一半内存分配给 ES 堆,让剩下的一半给 Lucene 的主要原因。但是,还有另一个最佳实践 not allocate more than 32-ish GB of RAM到 ES 堆(有时甚至是 less than 30B )。

所以,如果你有一台 128GB RAM 的机器,你不会分配 64GB 给 ES,但最多仍然是 32GB,Lucene 会很高兴地吞噬所有剩余的 96GB 内存来映射其索引文件。

调整内存设置是一个巧妙的组合,为 ES 提供足够的内存(但不要太多),并确保 Lucene 可以通过使用尽可能多的剩余内存来正常运行。

关于memory - elasticsearch - max_map_count 与堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40865208/

相关文章:

memory - 单次调用 fgetcsv() 会耗尽 PHP 中的大内存限制

elasticsearch - 无法在 Kibana 中检索包含特定符号的数据

elasticsearch - 在 Kibana 4 中对多个指标(计数)执行计算

elasticsearch - Elasticsearch 中的精确匹配搜索不起作用

elasticsearch - _mget 和 _search 在 ElasticSearch 上的区别

时间:2019-03-17 标签:c#system.timers内存泄漏

java - 在存在序列化的情况下理解 Java 内存模型下的一个棘手案例

java - Hibernate:将 Double 作为 Int 保存到数据库

elasticsearch - Elasticsearch 7使用number_format_exception作为字符串的输入值

c - DOS/4GW fatal error (1307) : not enough memory