找到问题的解决办法了么?

ES集群负载不均的问题

Elasticsearch | 作者 wangzehao | 发布于2020年09月03日 | 阅读数:3713

3台机器,6个节点,第一台机器的两个节点负载相比其他机器高很多,Java客户端配置了IP轮巡,还是这种情况

1533fce628e3fe43a92513e9e445658.png

 
查看了三台机器的内存使用情况,第一台几乎快满了, 其他两台都很正常,查询慢日志都集中在第一台机器上(分片很均匀)
已邀请:

Ombres

赞同来自: toytrain

自定义id吧?自动生成的id是不会有这个问题的,你们检查一下是否id分布不均衡

wangzehao

赞同来自:

有没有大神知道如何解决

wangzehao

赞同来自:

机器1的load红了,其他机器没事,什么原因造成的呢
364d68e0dde5d29ac3aa986458e9e14.png

wangzehao

赞同来自:

是否是Java客户端轮询没起作用呢?是否可以采用nginx代替执行负载均衡?

Charele - Cisco4321

赞同来自:

没用过你这个软件,不清楚你这个load代表什么意思,内存吗?
 
(如果是内存的话)
我看上面heap用量很小,是不是别的程序占用了内存?你确定是ES占的内存?

burgler

赞同来自:

主节点同时做数据节点和协调节点会有不小压力。

AiToMaKoTo - Elasticsearch.永远滴神

赞同来自:

 1.首先,你运行thread_pool看看集中在一台机器的线程是什么任务线程.
 2.你的索引有多少?看看是否存在部分索引分片集中在了一个机器?
 3.load高是因为任务线程都集中在了一个机器上面,而任务线程的分发与每个机器上的shard数有关,用allocation看看
 4.load是负载,跟你提问中的内存没啥关系,内存是heap,你看你那个机器的load满载,heap还很低.

pony_maggie - 公众号:犀牛饲养员的技术笔记

赞同来自:

1. 看下业务场景是不是有热点数据集中在某个节点上了
2. 看下shard在节点的分配情况
3. 节点的CPU,内存等配置是否差别很大

m9zjl

赞同来自:

你的机器哪个是client 哪个是 data,发一下 gc以及 threadpool,load高 内存低一般是io的问题,看一下是不是有频繁的bulk操作

wangzehao

赞同来自:

微信图片_20200908133649.png

第一台机器线程排了好多

wangzehao

赞同来自:

问题解决了,是由于第一台机器内存不足造成的,加了内存恢复正常了,总结原因,是因为系统内存不足,留给Lucence的内存空间不够导致查询缓慢,分配的查询任务由于慢造成任务堆积

要回复问题请先登录注册