ES:一次分片设计问题导致的故障

这篇具有很好参考价值的文章主要介绍了ES:一次分片设计问题导致的故障。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

### 现象:

1. 单节点CPU持续高

ES:一次分片设计问题导致的故障,elasticsearch,大数据,搜索引擎

 2.写入骤降

ES:一次分片设计问题导致的故障,elasticsearch,大数据,搜索引擎

3.线程池队列积压,但没有reject

ES:一次分片设计问题导致的故障,elasticsearch,大数据,搜索引擎

 4.使用方没有记录日志

### 排查

1.ES监控

只能看到相应的结果指标,无法反应出原因。

2.ES日志:大量日志打印相关异常(routate等调用栈)

core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:263)
at org.apache.logging.log4j.core.appender.FileManager.writeToDestination

3.查询CPU的使用,GET _nodes/hot_threads

35.3% (176.7ms out of 500ms) cpu usage by thread 'elasticsearch[xxxxx-es-hot2-13][write][T#10]'
     10/10 snapshots sharing following 179 elements
       app//org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.runWithPrimaryShardReference(TransportReplicationAction.java:433)
       app//org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.lambda$doRun$0(TransportReplicationAction.java:374)
       app//org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction$$Lambda$3657/0x0000000800d2f440.accept(Unknown Source)
       app//org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:61)
       app//org.elasticsearch.index.shard.IndexShard.lambda$wrapPrimaryOperationPermitListener$14(IndexShard.java:2588)
       app//org.elasticsearch.index.shard.IndexShard$$Lambda$3659/0x0000000800d2fc40.accept(Unknown Source)
       app//org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:61)
       app//org.elasticsearch.index.shard.IndexShardOperationPermits.acquire(IndexShardOperationPermits.java:273)
       app//org.elasticsearch.index.shard.IndexShardOperationPermits.acquire(IndexShardOperationPermits.java:240)
       app//org.elasticsearch.index.shard.IndexShard.acquirePrimaryOperationPermit(IndexShard.java:2563)
       app//org.elasticsearch.action.support.replication.TransportReplicationAction.acquirePrimaryOperationPermit(TransportReplicationAction.java:996)
       app//org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.doRun(TransportReplicationAction.java:370)





....



35.0% (174.7ms out of 500ms) cpu usage by thread 'elasticsearch[xxxxxx-es-hot2-13][write][T#5]'
     5/10 snapshots sharing following 216 elements
       app//org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeChunkedText(TextEncoderHelper.java:146)
       app//org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeText(TextEncoderHelper.java:58)
       app//org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:68)
       app//org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:32)
       app//org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:220)
       app//org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:58)
       app//org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177)
       app//org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170)
       app//org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161)
       app//org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
       app//org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
       app//org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
       app//org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)

“CPU高” 和写入、日志打印相关,无法获取更详细的信息,且由于瞬时抓取,也并不非常精准。

4.火焰图

ES:一次分片设计问题导致的故障,elasticsearch,大数据,搜索引擎

大致确认和日志相关。

5. 根据以往经验,可能和单分片doc数量限制相关

6.继续搜索日志,确认是单分片超过限制

2023-08-21 02:31:10,215 elasticsearch[xxxx-es-hot2-13][write][T#1] ERROR Recovering from StringBuilderEncoder.encode('[2023-08-21T02:31:10,201][DEBUG][o.e.a.b.TransportShardBulkAction] [xxxxx-es-hot2-13][cp0001001_2023_08][0] failed to execute bulk item (index) index {[xxxxx001_2023_08][event_xxx][xxxxxxxxx], source[{"id":"9f61ef55-0334-4363-9bcf-xxxx","rowkey":"xxxxxxd83ce110","column01":"1007922682","datachangelasttime":1692584511322,"column19":"xxx","column20":"80,295",xxx.......}]}
2023-08-21T02:31:10.237858677Z java.lang.IllegalArgumentException: number of documents in the index cannot exceed 2147483519

### 处理

删除索引重建,并设计好分片文章来源地址https://www.toymoban.com/news/detail-672739.html

到了这里,关于ES:一次分片设计问题导致的故障的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch——ES集群分片不平衡处理

    在使用云上的一个ES集群的时候,发现搜索性能很差,查看分片情况,发现ES有12个节点,索引创建了10个分片,1个副本,最后20个分片全在其中3个节点上,分布不均衡,实际只消耗了3个节点的资源,所以性能很差,再次创建新的索引,发现仍然是这种情况,最后通过下面的命

    2024年02月13日
    浏览(39)
  • ElasticSearch---查询es集群状态、分片、索引

    查看es集群状态: 如果?后面加上pretty,能让返回的json格式化。 加上?v的返回结果,如下: 解释如下: 查看es分片信息: 查看es分片信息,模糊匹配,比如匹配test: 返回信息如下: 解析如下: 查看状态为unassigned的es分片信息: 查看es索引 查看es所有索引: indices表示索引,是

    2024年02月02日
    浏览(40)
  • 记录一次es写数据延迟引发的问题

    某天,项目中来了一个需求,简单描述下就是这样的: 全量查询业务系统mysql中某一张表的数据,灌入到es中 easy so much,索引设定一个字段versionTime,每天同步数据时塞入时间戳,之后根据条件,将不是这次的versionTime的数据删除,就完成了全量更新,并将这一天中业务系统可

    2024年02月08日
    浏览(37)
  • elasticSearch核心概念的介绍(十四):ES集群索引分片管理

    上一章节我们对ES的集群进行了搭建,有兴趣的朋友可以参考一下elasticSearch核心概念的介绍(十三):docker搭建ES集群 这里我们来介绍了ES集群索引的分片管理 ES集群索引分片管理 介绍 分片(shard):因为ES是个分布式的搜索引擎,所以索引通常都会分解成不同部分,而这些

    2023年04月27日
    浏览(56)
  • 【elasticsearch】 es状态查看节点分片信息:/_cat/shards

    在kibana查询: 查询结果: index:索引名称 shard:分片数 prirep:分片类型,p=pri=primary为主分片,r=rep=replicas为复制分片 state:分片状态,STARTED为正常分片,INITIALIZING为异常分片 docs:记录数 store:存储大小 ip:es节点ip node:es节点名称

    2024年02月11日
    浏览(44)
  • ElasticSearch学习笔记-第四章 ES分片原理以及读写流程详解

    在学习ES分片原理以及读写流程之前,需要先学习一些ES的核心概念以及ES集群环境的相关知识 4.1 ES核心概念 4.1.1 索引 索引(Index)相当于MySQL中的数据库,一个索引就是一个拥有几分相似特征的文档的集合。 4.1.2 类型 类型(Type)相当于MySQL中的表,一个类型就是索引的一个逻辑上

    2024年02月06日
    浏览(59)
  • 【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化

    ElasticSearch系列整体栏目 内容 链接地址 【一】ElasticSearch下载和安装 https://zhenghuisheng.blog.csdn.net/article/details/129260827 【二】ElasticSearch概念和基本操作 https://blog.csdn.net/zhenghuishengq/article/details/134121631 【三】ElasticSearch的高级查询Query DSL https://blog.csdn.net/zhenghuishengq/article/details/1

    2024年02月03日
    浏览(50)
  • 【ElasticSearch】ES集群搭建、监控、故障转移

    单机的ES做数据存储与搜索,必然面临两个问题: 海量数据存储问题 单点故障问题 因此,考虑使用ES集群: 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点。如此,ES的存储能力就是所有节点存储能力的总和 单点故障问题:将分片数据 在不同

    2024年02月16日
    浏览(60)
  • 【ElasticSearch】索引数据mapping嵌套深度过大导致Stackoverflow问题排查

    集群所有数据节点频繁因为StackOverflowError的错误挂掉,启动后还会挂掉,StackOverflowError异常栈如下 通过堆栈可以看出是写入线程池[write]发生的Stackoverflow,并且可能是在解析mapping的过程发生的,通过ObjectMapper类推断是Object类型数据写入导致的。因此通过拉取集群内所有索引的

    2024年02月03日
    浏览(40)
  • Es 通过javaApi上传数据Long类型丢失精度的问题一次性解决

    通过 updateRequest.docAsUpsert(true) true 表示无匹配_id是插入数据,false 表示无匹配_id会抛出异常

    2024年02月15日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包