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

master更新mapping线程block

Elasticsearch | 作者 pengweinan | 发布于2020年11月28日 | 阅读数:1014

elk日志集群,每天有预创建索引,因为是日志集群无法每个mapping都添加,但是索引太多涉及到更新mapping,引起线程blocked,想问下解决方案是否有调优方向,这个问题目前集群必现。
es版本:7.6.2
 
集群blocked.png
已邀请:

JiangJibo - 喊我雷锋

赞同来自:

日志创建不应该用Index_Template吗? 这样应该不涉及到mapping修改吧,还是说你们的日志索引都是自动创建的?还有动态字段?你的问题的上下文说的不是很清晰,最好再补充下

pengweinan

赞同来自:

我们用的就是template,是预创建索引的,但是template开启的动态mapping,因为是日志集群,没有特别详细的问每一个业务日志都做成一个模板,都是公用一套模板,然后其它字段是动态生成的,最近一个月由于业务接入越来越多,这个问题现在每天定时更新索引或者mapping时已经必现,必须要同时重启master才能恢复,所以想问下老师是否遇到过或者有没有一些好的解决方案,还请老师指导一下。

JiangJibo - 喊我雷锋

赞同来自:

es默认开启动态字段的索引功能,但你们字段太多的情况下,再更新会导致集群master很卡。解决方法:禁止template的动态索引功能,这会导致新的字段不能被作为检索条件,如果动态索引是你们业务必须的话,那就要考虑拆分索引了,特殊的业务就不要和通用的业务糅杂在一起了,不要因为一些总是动态添加字段的业务日志影响所有的日志的可用性。

JiangJibo - 喊我雷锋

赞同来自:

拆分日志,但是日志的名称都用统一的前缀  "log_index_",你在检索时指定的索引名称 为 "log_index_*",这样就能检索所有的日志索引了,和你用一个索引时一样的功能

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

赞同来自:

用 _cluster/health 看下number_of_pending_tasks是多少,如果排队了很多,再用
_cat/pending_tasks看看有哪些任务阻塞。

要回复问题请先登录注册