Q:有两个人掉到陷阱里了,死的人叫死人,活人叫什么?

ES堆内存在配置不好的节点上该如何选择

Elasticsearch | 作者 yeziblo | 发布于2019年09月26日 | 阅读数:1493

首先预祝各位兄弟国庆快乐~

我知道对于ES来说,官方从来都是建议把机器的一半内存交给ES,特殊的情况下,如果内存大于64G,那么最多只能给ES32G(最好是31G)的内存。

以上是建立在该机器只部署ES的情况下。

我想请教一下,因为硬件的限制,所以偶尔会遇到机器上并不只有ES一个服务,而是部署有多个服务的情况,比如我有一台服务器,内存是64G,但我上面除了部署ES之外,还部署有kafka、mysql与redis。

这样的情况虽然不是经常出现,但是我想请教各位兄弟,在这种情况下,我们该如何选择ES堆内存的大小呢?

如果还是死板的给ES分配31G的内存,那剩余64-31=33G的内存,则会由lucene、Mysql和kafka共同争夺,这样势必就会影响ES的查询性能。

所以这种情况,我们该如何考虑呢?

另外:如果ES的查询更多依赖存储于lucene中的segment的话,那么ES的堆内存具体都用来处理什么东西呢?堆内存和off-heap内存,到底哪个对ES更重要呢?

希望各位兄弟可以抽空回答我的问题,不胜感激!

祝各位身体健康、家庭幸福!
已邀请:

xiaoke - http://blog.51cto.com/kexiaoke

赞同来自:

1.mark
2.你机器内存是64gb,如果分配了31gb的内存给es,那么再跑个压力不是很大的myql和kafka问题也不大的。机器上做好的完整的监控,关注一下内存和cpu和负载。
3.ES对磁盘读写压力一般都会很大。所以还是不建议把mysql实例放到ES实例上

doom

赞同来自:

官方的意思是内存留一半给lucene;最大堆内存不超过32G,是最大的限制;建议监控一下cpu和负载;es  mysql 和 kafka都是读写要求的,压力过大的话,不建议放在同一几台;

LZY_lee

赞同来自:

建议你了解一下堆内缓存和堆外缓存

要回复问题请先登录注册