首页 > 编程语言 >ES无法启动_OOM_Exception in thread "main" java.lang.RuntimeException: starting java failed wit

ES无法启动_OOM_Exception in thread "main" java.lang.RuntimeException: starting java failed wit

时间:2023-05-30 14:55:38浏览次数:48  
标签:lang Exception java elasticsearch 内存 JVM ES es

1.报错显示

[root@iZ7xv2ya5ap2bnetr231koZ ~]# docker logs es
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
output:
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid170.log
error:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000a0000000, 1073741824, 0) failed; error='Not enough space' (errno=12)
        at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119)
        at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81)
        at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:135)
        at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86)
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]

2.错误原因分析

2-1 启动ES容器命令

docker run -d \
    --name es \
    -e "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.16.1

2-2 错误分析(使用gpt3.5查询分析的,如果错误,恳请指正)

1.errno=12:错误码为12,表示内存不足(OOM)

2."ES_JAVA_OPTS=-Xms1024m -Xmx1024m"分析该命令:
ES_JAVA_OPTS环境变量可以用来设置JVM的参数,以便控制JVM在容器中使用的内存量。该命令中 -Xms1024m指定JVM堆的最小内存量为1024MB, -Xmx1024m指定JVM堆的最大内存量为1024MB。
这样设置JVM堆内存可以避免Elasticsearch使用太多内存导致OOM(Out of Memory)错误。如果Elasticsearch需要更多的内存来执行操作,JVM内存将会自动增长到最大值,但是如果超过最大值,将会抛出OOM错误

3.也就是说JVM占用内存过多,减少JVM占用内存即可,-Xms1024m指定JVM堆的最小内存量为1024MB,通过将设置的JVM最小内存量调整为512M来减少JVM占用的内存,将问题得以解决

3.解决

 docker run -d \
    --name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.16.1

运行容器成功:

标签:lang,Exception,java,elasticsearch,内存,JVM,ES,es
From: https://www.cnblogs.com/rong-xu-drum/p/17443225.html

相关文章

  • java编程基础之抽象类
    抽象类观察以下代码有什么问题:Peoplepeople=newpeople("");people.print();结论:实例化people没有意义派派也是一个人,张三、李四等等也是一个人,但是我们在生活当中呢,人是一种分类,并不是单个个体,他是我们抽象出来的,不具体,所以说他没有现实世界当中对应一个人这样的一个人存在,这......
  • 2.6. Java内存管理与垃圾回收
    2.6.1.Java内存模型在Java中,内存被划分为以下几个区域:堆(Heap):存储对象实例和数组,是垃圾回收的主要区域。栈(Stack):存储局部变量和方法调用。每个线程有自己的栈。方法区(MethodArea):存储类信息,如类的结构、方法、字段等。本地方法栈(NativeMethodStack):存储本地方法(如JNI)的调用......
  • 3.4. Java集合框架(List、Set、Map等)
    Java集合框架是Java提供的一套用于存储和操作数据的接口和类。它包括以下几个主要部分:接口:集合框架定义了一系列接口,如Collection、List、Set、Map等。实现类:集合框架提供了一些实现这些接口的类,如ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap等。......
  • Java第五日
    1.多重循环1.代码  2.实战99乘法表 2.break1.语法结构 2.实战 3.continue语法1.语法结构2.实战  4.数组 1.数组定义数组是一个变量,存储相同数据类型的一组数据声明一个变量就是在内存空间划出一块合适的空间声明一个数组就是在内存空间划出一串......
  • Java第六日
    今日继续数组的学习 1.Arrays工具类的使用2.数据应用3.二维数组 1.Arrays工具类的使用Arrays的描述java.util.ArraysSort()升序查询实战录入五位同学的成绩,并进行升序排序然后输出结果 2.数据的应用1.求最大值已知数组存储5位学员成绩,求最大值给max先赋一个......
  • 智能社原生的力量——原生JavaScript开发高级
    智能社原生的力量——原生JavaScript开发高级download:3w51xuebccomSpringBoot3:打造高效的Java应用程序SpringBoot是一个由Pivotal团队开发的开源框架,它基于Spring框架,旨在使Spring应用程序的开发变得更加容易和快速。最新的SpringBoot版本是3.0.0,它带来了许多新特性和功能,让我......
  • Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包
    Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包 原创软件测试日常记录2023-01-1907:19:29博主文章分类:ubuntu©著作权文章标签ubuntujarlinuxJAVAjava文章分类运维阅读数122 经常需要在Linux服务器上设置开机启动jar包,首先编写一个启动jar包的脚本,这里以/......
  • java 网络通讯:tcp,upd,http
    java网络通讯:tcp,upd,http1.TCP通信服务端用的代表类:ServerSocket类,注册端口。调用accept()方法阻塞等待接收客户端连接。得到Socket对象。TCP通信的基本原理?客户端怎么发,服务端就应该怎么收。客户端如果没有消息,服务端会进入阻塞等待。Socket一方关闭或者出现异常、对方......
  • Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载
    有时候在系统中需要一次性下载多个文件,但逐个下载文件比较麻烦。这时候,最好的解决办法是将所有文件打包成一个压缩文件,然后下载这个压缩文件,这样就可以一次性获取所有所需的文件了。下面是一个名为CompressUtil的工具类的代码,它提供了一些方法来处理文件压缩和下载操作:importor......
  • java treemap
    TreeMap是Java中的一个类,它实现了Map接口,利用红黑树数据结构来有序存储键值对。TreeMap中的键按升序排序,若要自定义排序方式,则可以提供自定义的比较器。TreeMap实现了高效的数据访问、插入和删除操作,大多数常规操作的时间复杂度为O(logn)。importjava.util.TreeMap;public......