我正在尝试计算three
节点 es 集群中总内存的良好平衡。
如果我有三个节点集群,每个集群都有32G
内存,8
vcpu。哪种组合更适合平衡所有组件之间的内存?我知道不会有固定的答案,但我只是想尽可能准确。
将使用不同的 elasticsearch 组件是beats
(filebeat, metricbeat,heartbeat), logstash
, elasticsearch
, kibana
.
该集群的大多数用例是,应用程序日志被索引并对其运行查询,例如通过 curl 调用获取 7 天、30 天的平均响应时间、过去 24 小时、7 天等有多少不同的状态代码,所以聚合将被使用,其他用例正在监控,通过 kibana 查看日志但没有 ML 作业或仪表板创建等。
经过以下官方文档后,建议设置堆大小如下,
logstash
-
https://www.elastic.co/guide/en/logstash/current/jvm-settings.html#heap-size
典型摄取场景的推荐堆大小应不小于4GB
且不大于8GB
.
elasticsearch
-
设置Xms
和Xmx
不超过50%
您的总内存。Elasticsearch 需要内存用于 JVM 堆以外的用途
Kibana
-
我还没有找到 kibana 的默认或推荐内存,但在我们的单节点8G
内存测试集群中,它占用1.4G
了总数 ( 256 MB/1.4 GB
)
beats
-
没有找到节拍的默认或推荐内存,但它们也会消耗或多或少。
下面的理想组合应该是什么?
32G
= 16G 用于操作系统 + 16G 用于 Elasticsearch 堆。
对于来自 16G 操作系统的 logstash 4G,说三个节拍将消耗 4G,kibana 2G
这使得操作系统只有 6G,如果将来必须安装任何新组件,比如 APM 或任何其他相关的操作系统,那么它们都将只有 6G 和操作系统.
以上是所有组件的官方建议。(即OS 50%,es 50%)
32G
= 8G 用于弹性搜索堆。(25% 用于 elasticsearch)
logstash 4G + beats 4G + kibana 2G 剩下
14G 用于操作系统和任何未来的组件。
我错过了一些可以改变这种记忆组合的东西?
任何通过改变上述组合或任何新组合的建议表示赞赏。
谢谢,