es7学习笔记 cpu负载不均衡、超长fullGC、大量400报错[通俗易懂]

es7学习笔记 cpu负载不均衡、超长fullGC、大量400报错[通俗易懂]ElasticSearch负载不均衡现象:往es7集群中推数时,发生如下情况接口出现很多400 发现集群中某台机器cpu被怼爆 发生fullGC产生400报错的原因是es7做了熔断优化,当jvm内存使用超过阈值,为了避免丑陋的oom,会直接限流并抛出EsRejectedExecutionException。我们强硬的关掉了这个配置,因为我们的推数有失败重试。产生fullGC是因为一个bulk批处理的数据量太大,我们一个文档1.5M,800个文档作为一批,两个线程并行推,jvm内

大家好,又见面了,我是你们的朋友全栈君。

现象:往es7集群中推数时,发生如下情况

  1. 接口出现很多400
  2. 发现集群中某台机器cpu被怼爆
  3. 发生fullGC

es7学习笔记 cpu负载不均衡、超长fullGC、大量400报错[通俗易懂]

产生400报错的原因是es7做了熔断优化,当jvm内存使用超过阈值,为了避免丑陋的oom,会直接限流并抛出EsRejectedExecutionException。

我们强硬的关掉了这个配置,因为我们的推数有失败重试。

es7学习笔记 cpu负载不均衡、超长fullGC、大量400报错[通俗易懂]

产生fullGC是因为一个bulk批处理的数据量太大,我们一个文档1.5M,800个文档作为一批,两个线程并行推,jvm内存30G,所以es服务器很快就开始进行fullGC。

所以我们立刻将bulk的数量调整为50,并改为单线程推送,终于没有出现fullGC。

bulk会把将要处理的数据载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载。

一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件(即$ES_HOME下的config下的elasticsearch.yml)中。

产生单台机cpu爆炸的原因

  1. primary shard主副分片分布不均。
  2. master node既是master node又是data node,master node既要做数据检索,也要做集群的负载均衡转发器,导致每个集群的master node的CPU都很高,因此每次告警首先都是master node。

如果是情况1,则需要移动主分片

例如移动node-1的分片0到node-4。

curl -XPOST 'http://localhost:9200/_cluster/reroute' -d '{
  "commands":[{
  "move":{
    "index":"indexName",
    "shard":0,
    "from_node":"node-1",
    "to_node":"node-4"
}}]}'

优点:操作简单,恢复时间短;不必修改master node的配置,master node长期负载后高

缺点:索引大,移动时有很高的IO,索引容易损坏,需要做备份,不能解决master node既是数据节点又是负载均衡转发器的问题。

注意:分片和副本无法移动到同一个节点

若为情况2,则需重建索引,从另外一个集群导入。

删除原来的索引,重新建立索引;利用elasticsearch dump等工具从另一个集群中把数据导入到新的索引中。

优点:可以重新配置master node和data node,主从负载均匀。

缺点:费时间,容易数据丢失,需要验证数据的一致性。
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142716.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月23日 上午7:40
下一篇 2022年5月23日 上午8:00


相关推荐

  • H.264/MPEG-4 AVC学习

    H.264/MPEG-4 AVC学习转自:https://www.freehacker.cn/media/codec-h264/简述H.264,又称为MPEG-4第10部分,高级视频编码(英语:MPEG-4Part10,AdvancedVideoCoding,缩写为MPEG-4AVC)是一种面向块的基于运动补偿的视频编码标准。对于视频序列样本来说,使用H.264编码器能够比使用有运动补偿的MPEG-…

    2026年1月27日
    5
  • ArcGIS线转面

    ArcGIS线转面nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 1 打开 ArcMap 用 AddData 加载 shpPolyline 线文件 br nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 2 选 Editor 编辑 StartEditing 开始编辑 br nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 3 选 Editor 编辑 MoreEditingT Topology 拓扑 br nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 4 在 Topology 拓扑工具栏中选 MapTopology 再在 Shp 文件上打勾 Okbr nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 5 用 SelectFeatur

    2026年3月26日
    1
  • 优秀!Jupyter 与 PyCharm 可以完美融合!

    优秀!Jupyter 与 PyCharm 可以完美融合!仅作学术分享 不代表本公众号立场 侵权联系删除转载于 机器之心 JupyterNoteb 真的是让人又爱又失望 在有的场景下它极其便利 但是在很多大模型或复杂项目上 它又无能为力

    2026年3月16日
    2
  • Google Earth Engine简介

    Google Earth Engine简介GoogleEarthEngine(GEE)是Google提供的对大量全球尺度地球科学资料(尤其是卫星数据)进行在线可视化计算分析处理的平台,未来地球科学的大杀器啊。链接:https://earthengine.google.com/。注意上Google要费点劲。  关于GEE的入门学习可以参考以下链接(该部分转自无形的风的博客,3ks):GoogleEart

    2026年1月23日
    5
  • ubuntu java卸载_ubuntu如何完全卸载Java

    ubuntu java卸载_ubuntu如何完全卸载Java1 移除所有 Java 相关包 Sun Oracle OpenJDK IcedTeaplugi GIJ 1 apt getupdate 2 apt cachesearchj awk print 1 grep E e ia32 sun oracle java e openjdk e icedtea e defau

    2026年3月19日
    2
  • Tomcat安装(详细)

    Tomcat安装(详细)1、Tomcat下载安装​ 1、安装​ (一)Tomcat官网下载​ (二)解压​ (三)配置环境变量​ (四)启动-关闭Tomcat ​ (五)访问测试Tomcat输入http://localhost:8080网页打不开​ 2、了解配置文件及目录结构可以配置启动端口号默认端口号:8080MySQL默认:3306http:80https:443<Connectorport=”8080″protocol=”HTTP/1.1

    2025年11月20日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号