带你读《Elastic Stack 实战手册》之76:——4.2.2.Elasticsearch智能巡检开发设计实践(3)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之76:——4.2.2.Elasticsearch智能巡检开发设计实践(3)

《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.2.Elasticsearch智能巡检开发设计实践(2) https://developer.aliyun.com/article/1226094



Index 层面指标分析

 

replica

 

所有集群的 index 都应该有副本分片,没有副本分片的 index 在节点 crash 时会丢失数据。

 

GET index_name/_settings

当 number_of_replicas 为 0 时候异常情况。

 

动态 mapping

 

dynamic mapping 设置为 true 会使得 mapping 变得不可维护,且 mapping 源数据由

master 维护、分发,大量变更可能导致 master 压力过大,在高峰情况下,可能会使得积压大量task,引发集群不响应、踢出节点等问题。

 

GET /*/_mapping?format=json

当 number_of_replicas 为 0 时候异常情况。

 

动态 mapping

 

dynamic mapping 设置为 true 会使得 mapping 变得不可维护,且 mapping 源数据由

master 维护、分发,大量变更可能导致 master 压力过大,在高峰情况下,可能会使得积压大量task,引发集群不响应、踢出节点等问题。


GET /*/_mapping?format=json

巡检需要检查出 "dynamic=true(或默认)"的索引的集群,标记为异常。


refresh_interval

 

索引 refresh 频率是影响性能的一个因素,受到 refresh_interval 参数与 buffer 大小的影响,由于业务场景的差异,对 refresh 的设置可能大不相同,可将集群类型大致分为搜索类型与数据分析类型,根据类型的不同设置差异化的阈值,且集群不应该出现 refresh_interval = -1 的设置。


GET /*/_settings?include_defaults=true


indices.refresh.total

 

refresh 的频率影响着 segment 的生成速度与大小,而 segment 过多往往影响查询性能,并且需要消耗更多的内存和磁盘空间。由于默认值为 refresh_interval = 1s,不考虑 buffer 的影响可以认为 refresh 频率为 60/min,故巡检阈值可以设置到比默认值稍高,例如:count(refresh) = 80/min。


GET /_nodes/stats/indices,ingest/refresh


max_result_window

 

max_result_window 为单次请求返回 doc 的最大值,默认为 10000,该默认值的限制可以覆盖到所有正常的业务场景。一般是深度分页、全量查询、job 查询可能导致返回 doc 数大于10000,触发异常,而这些场景可以由 scroll、search after 来完成。故该指标阈值可以设置成该参数默认值。


GET /*/_settings?include_defaults=true


jvm 层面指标分析

 

jvm heap 使用率

 

jvm 堆的使用率过高有着 OutOfMemory 的风险,并使得 GC 频率过高,影响请求响应时间。由于使用的 G1 收集器,首次 GC 收集会在预估 GC 时间达到预定值的时候开始触发,则

heap 使用率的稳定值也随着参数设置而产生较大差异。而该参数主要是为了预防 OutOfMemory 异常,所以该指标阈值可以设置一个较大值,例如 heap > 90。

 

GET /_nodes/stats/indices,jvm

jdk version 一致性


由于 Elasticsearch 的分布式属性,集群存在多节点,每个节点一个单独的实例,需要保证jdk 版本一致。


jvm heap segment memory

 

segment memory 常驻 heap 内存,所以 segment memory 的增长会压缩其他对象的内存空间。segment memory 是每个 segment 倒排词典上层的一个前缀索引,即 FST 结构,该前缀索引会在 segment 不断的累积下逐渐增多。

 

为了防止其对 heap 内存过多的占用,需要对该值继续检查限制,由于 FST 结构对前缀索引进行大量压缩,正常状态下对 heap 占用较低,巡检阈值也可以设置较低,例如 20% heap_

size。


GET /_nodes/stats/indices,ingest/segments

full gc

 

Elasticsearch 7.x 默认使用的 G1 垃圾收集器,所以一般会是 Young GC 或 Mixed GC,如果mixed GC 无法跟上新对象分配内存的速度,导致老年代填满无法继续进行 Mixed GC,于是使用 full GC 来收集整个 heap。G1 不提供 full GC,使用的是 serial old GC。所以该

full GC 是单线程串行的,且 stop the world,这对业务来说是致命的。所以该巡检的阈值为"count(full gc) > 0"。

GET /_nodes/stats/indices,jvm

threadpool 层面指标分析

 

bulk reject 数量

 

bulk 出现 reject 意味着线程池中线程被完全占用,且队列也已经占满。该指标阈值可设置为 "count(bulk rejected)>0"。


GET _cat/thread_pool

search reject 数量

 

search 出现 reject 意味着线程池中线程被完全占用,且队列也已经占满。该指标阈值可设置为 count(search rejected)>0,查询 API 同上。


《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.2.Elasticsearch智能巡检开发设计实践(4) https://developer.aliyun.com/article/1226091


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
5月前
|
运维 监控 Java
探索Elasticsearch在Java环境下的全文检索应用实践
【6月更文挑战第30天】在大数据背景下,Elasticsearch作为分布式搜索分析引擎,因其扩展性和易用性备受青睐。本文指导在Java环境中集成Elasticsearch,涉及安装配置、使用RestHighLevelClient连接、索引与文档操作,如创建索引、插入文档及全文检索查询。此外,还讨论了高级查询、性能优化和故障排查,帮助开发者高效处理非结构化数据全文检索。
162 0
|
2月前
|
存储 关系型数据库 MySQL
浅谈Elasticsearch的入门与实践
本文主要围绕ES核心特性:分布式存储特性和分析检索能力,介绍了概念、原理与实践案例,希望让读者快速理解ES的核心特性与应用场景。
|
3月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
19119 21
|
26天前
|
开发框架 监控 搜索推荐
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
108 0
|
1月前
|
消息中间件 监控 关系型数据库
MySQL数据实时同步到Elasticsearch:技术深度解析与实践分享
在当今的数据驱动时代,实时数据同步成为许多应用系统的核心需求之一。MySQL作为关系型数据库的代表,以其强大的事务处理能力和数据完整性保障,广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提升,单一依赖MySQL进行高效的数据检索和分析变得日益困难。这时,Elasticsearch(简称ES)以其卓越的搜索性能、灵活的数据模式以及强大的可扩展性,成为处理复杂查询需求的理想选择。本文将深入探讨MySQL数据实时同步到Elasticsearch的技术实现与最佳实践。
70 0
|
3月前
|
存储 运维 搜索推荐
运维开发.索引引擎ElasticSearch.倒序索引的概念
运维开发.索引引擎ElasticSearch.倒序索引的概念
51 1
|
5月前
|
存储 监控 固态存储
elasticsearch索引生命周期管理(ILM):原理和实践
elasticsearch索引生命周期管理(ILM):原理和实践
|
5月前
|
存储 JSON API
Elasticsearch中的模板:定义、作用与实践
Elasticsearch中的模板:定义、作用与实践
|
5月前
|
搜索推荐 Java 数据库
Java中的ElasticSearch集成与实践
Java中的ElasticSearch集成与实践
|
6月前
|
数据采集 数据挖掘 索引
Elasticsearch “指纹”去重机制,你实践中用到了吗?
Elasticsearch “指纹”去重机制,你实践中用到了吗?
84 7

相关产品

  • 检索分析服务 Elasticsearch版