elasticsearch OOM

一次 elasticsearch挂掉,查看日志显示是 java.lang.OutOfMemoryError ,并且报错是由 netty 报出来的。netty 是节点间或 外部对 ES 集群的通信组件;

[2022-01-21T11:17:29,031][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [web8.es0] fatal error in thread [Thread-322], exiting
java.lang.OutOfMemoryError: Java heap spaceat java.util.Arrays.copyOf(Arrays.java:3332) ~[?:1.8.0_131]at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124) ~[?:1.8.0_131]at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448) ~[?:1.8.0_131]at java.lang.StringBuilder.append(StringBuilder.java:136) ~[?:1.8.0_131]at org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter.format(LineSeparatorPatternConverter.java:66) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:333) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:232) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:217) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:57) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161) ~[log4j-core-2.8.2.jar:2.8.2]at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:268) ~[log4j-core-2.8.2.jar:2.8.2]at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:134)at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:644)at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:544)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:498)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:458)at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)at java.lang.Thread.run(Thread.java:748)
[2022-01-21T11:17:29,031][ERROR][o.e.t.n.Netty4Utils      ] fatal error on the network layerat org.elasticsearch.transport.netty4.Netty4Utils.maybeDie(Netty4Utils.java:179)at org.elasticsearch.xpack.security.transport.netty4.SecurityNetty4HttpServerTransport.exceptionCaught(SecurityNetty4HttpServerTransport.java:61)at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.exceptionCaught(Netty4HttpRequestHandler.java:82)at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:285)at io.netty.channel.AbstractChannelHandlerContext.notifyHandlerException(AbstractChannelHandlerContext.java:850)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:364)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)at org.elasticsearch.http.netty4.pipelining.HttpPipeliningHandler.channelRead(HttpPipeliningHandler.java:63)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)

查看 {cluster}_access.log 查看有大量 bulk 日志,并且是 写的index 是不存在,因为 action.auto_create_index: false 禁止自动创建 index。

使用 PUT index 命令,创建那个不存在的 index, 然后ES 恢复正常;

后记:

不清楚这里的逻辑, 给一个不存在的index 写数据啥会 OOM, 还有就是这块的逻辑看看有优化的空间?如果发现自动创建 index 关闭,并且没有这个index 的话,直接返回,做到轻量级处理。

elasticsearch OOM相关推荐

  1. Elasticsearch OOM(内存溢出)

    首先,说明笔者的机器环境(不结合环境谈解决方案都是耍流氓): cpu 32核,内存128G,非固态硬盘:RAID0 (4T * 6),单节点,数据量在700G到1800G,索引15亿~21亿.敖丙大人 ...

  2. Elasticsearch大数据量写入调优和原理解析

    前言 千万.亿级别数据批量写入ES的调优和原理解析 Elasticsearch version (bin/elasticsearch --version): 7.8 Plugins installed ...

  3. 互联网摸鱼日报(2022-10-20)

    互联网摸鱼日报(2022-10-20) InfoQ 热门话题 81% 的 IT 团队被公司高层指示要减少或停止云支出 编程神器Copilot逐字抄袭他人代码?GitHub 回应:相似,但不同- 开发者 ...

  4. Elasticsearch内存分配设置详解

    Elasticsearch默认安装后设置的内存是1GB,对于任何一个现实业务来说,这个设置都太小了.如果你正在使用这个默认堆内存配置,你的集群配置可能会很快发生问题.   这里有两种方式修改Elast ...

  5. 腾讯Elasticsearch海量规模背后的内核优化剖析

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:黄华,腾讯 TEG 云架构平台部研发工程师 背景 Elast ...

  6. Elasticsearch性能优化实战指南

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 0.背景 在当今世界,各行各业每天都有海量数据产生,为了从这些海量数据中获取想要的分析结果,需 ...

  7. 58同城 Elasticsearch 应用及平台建设实践

    分享嘉宾:于伯伟 58同城 高级架构师 编辑整理:陈树昌 内容来源:DataFunTalk 导读:Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索.结构化检索和分析,并能将这三 ...

  8. 滴滴千万级ElasticSearch平台发展之路!

    来自:滴滴技术 导读:滴滴 ElasticSearch 团队经过 7 个月的奋斗,将维护国内的 30 多个 ES 集群,2000 多个 ES 节点,4PB 的数据,从 2.3.3 跨大版本无缝升级到 ...

  9. 滴滴ElasticSearch平台跨版本升级以及平台重构之路

    来自:滴滴技术 导读:滴滴 ElasticSearch 团队经过 7 个月的奋斗,将维护国内的 30 多个 ES 集群,2000 多个 ES 节点,4PB 的数据,从 2.3.3 跨大版本无缝升级到 ...

最新文章

  1. Struts2自定义拦截器实例—登陆权限验证
  2. WP评论系统更换小结(转)
  3. java applet退出功能_java-如何使用内置在applet中的Button在浏览器中停止applet?
  4. Python3 字符串拼接
  5. 文献学习(part52)--基于泛岭估计对岭估计过度压缩的改进方法
  6. 如何用 TypeScript 代码区分一个 button 动作是由键盘还是鼠标触发的
  7. 成功驱动HD4600-Clover引导
  8. SSL 1624——小萨的烦恼【最短路】【枚举】
  9. 在Hadoop上安装HBase
  10. 利用函数重载编写函数max_彻底理清重载函数匹配
  11. matlab 编程——一些细节、常犯错误的汇总
  12. Ambari HDP 完整安装手册
  13. 【需求】如何编写高质量“软件需求说明书”(转)
  14. 用matlab辨识系统,Matlab系统辨识工具箱
  15. XML数据结构 SAX 解析
  16. flutter 的像素尺寸
  17. 星浩资本-以流程为中心
  18. c/c++静态变量和静态函数
  19. (学习笔记)JAVA开发需要掌握哪些技术?
  20. 【广州华锐互动】VR数字虚拟展厅为企业提升品牌形象和知名度

热门文章

  1. svpwm的matlab仿真实现
  2. 怎么有的帖子发不了啊
  3. python位运算用途_Python 位运算符与位运算
  4. 数据库发展史 特性,安装区别
  5. GetAsyncKeyState函数中按键的信息
  6. visual studio 错误:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include StdAfx.h”?
  7. Sound Forge使用技巧之制作手机铃声
  8. Python错误之 SyntaxError: invalid syntax的解决方法总结
  9. 2019 My excel
  10. 基于JAVASE的彩票摇号系统