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


相关推荐

  • jenkinsfile docker_docker从0创建镜像

    jenkinsfile docker_docker从0创建镜像前言之前我们用docker手动安装了jenkins环境,在jenkins中又安装了python3环境和各种安装包,如果我们想要在其他3台机器上安装,又是重复操作,重复劳动,那会显得很low,这里可以

    2022年7月31日
    9
  • 计算机全选的键盘,全选快捷键是什么,教您电脑全选快捷键是什么[通俗易懂]

    计算机全选的键盘,全选快捷键是什么,教您电脑全选快捷键是什么[通俗易懂]我们在编辑内容的时候难免会遇到全选快捷键的使用,如果使用鼠标容易出错,又不方便,如果使用全选快捷键会不会方便呢?那么全选快捷键是什么?怎么快速全选文件呢?下面,小编给大家分享电脑全选快捷键的操作按键。在日常的工作中,快捷键的使用能提高我们的工作速度,因此我们会去记住一些快捷键以方便使用。不少人在编辑文字的时候,想要使用全选快捷键,但是却不知道要按键盘哪几个键,下面,小编就来跟大家介绍电脑全选快捷键…

    2022年5月9日
    116
  • 数据仓库中拉链表的实现程序_拉链表中统计90天数据

    数据仓库中拉链表的实现程序_拉链表中统计90天数据在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间。拉链表适用于以下几种情况吧数据量有点大,表中某些字段有变化,但是呢变化的频率也不是很高,业务需求呢又需要统计这种变化状态,每天全量一份呢,有点不太现实,不仅浪费了存储空间,有时可能业务统计也有点麻烦,这时,拉链表的作用就提现出来了,既节省空间,又满足了需求。一般在数仓中通过增加begi…

    2022年10月16日
    4
  • kernel: TCP: time wait bucket table overflow 问题分析和解决[通俗易懂]

    kernel: TCP: time wait bucket table overflow 问题分析和解决[通俗易懂]目录一问题描述二问题分析三问题解决四问题扩展4.1timewait连接过高有什么影响?4.2如何减少timewait连接数?一问题描述工作中的一台数据库打印如下日志:二问题分析查看当时TCP连接数状态:netstat-n|awk’/^tcp/{++S[$NF…

    2022年5月23日
    50
  • 解决IDEA插件安装慢、超时、不成功问题[通俗易懂]

    解决IDEA插件安装慢、超时、不成功问题[通俗易懂]解决IDEA插件安装慢、超时、不成功问题1.修改本地hosts文件,打开文件位置:Windows系统Hosts文件路径:C:\Windows\System32\drivers\etc\hosts用工具打开hosts文件2.打开国内插件的节点IP地址http://tool.chinaz.com/speedtest/plugins.jetbrains.com在检测结果中选择一个相对耗时少的IP地址,因为比较快然后按照第一步在hosts文件里加上即可,然后保存(需要以管理员身份)3.重

    2022年5月11日
    177
  • 数据挖掘的预测建模_数据挖掘建模培训

    数据挖掘的预测建模_数据挖掘建模培训数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。听起来比较抽象,我们举个例子。傍晚小街路面上沁出微雨后的湿润,和煦的细风吹来,抬头看看天边的晚霞,嗯,明天又是一个好天气。走到水果摊旁,挑了个根蒂蜷缩、敲起来声音浊响的青绿西瓜,心里期待着享受这个好瓜。由路面微湿、微风、晚霞得出明天是个好天气。根蒂蜷缩、敲声浊响、色泽青绿推断出这是个好瓜,显然,我们是根据以往的经验来对未来或未知的事物做出预测。人可以根据经验对未来进行

    2025年9月12日
    6

发表回复

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

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