ElasticSearch7.4和jdk不兼容问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch7.4和jdk不兼容问题相关的知识,希望对你有一定的参考价值。

参考技术A 首先感谢这位博主     http://www.guoning.cc/?p=91  的报错分享:

Elasticsearch-7.3.2启动报错,java使用自带的jdk、java13/java12/java11都有以下的未知错误。

Exception in thread "main" java.lang.RuntimeException: starting java failed with [137]

output:

error:

at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:111)

at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:79)

at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:57)

at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:89)

解决办法可以查看/var/log/message来定义出错的具体信息。

查看日志信息得知是内存溢出被系统杀掉进程引起的错误,解决办法可以加大内存。如果内存有限可以修改elasticsearch-7.3.2/config/jvm.options的内存使用限制,如下可以修改为256m:

-Xms256m

-Xmx256m

另外针对java9及以上版本,还需要修改gc的配置:

## GC configuration

#-XX:+UseConcMarkSweepGC

-XX:+UseG1GC

使用es6.x版本如果出现启动时被killed的情况,也有可能是内存太低引起的。

vim /etc/profile

# 在profile文件末尾添加

#java environment

export JAVA_HOME=/opt/elasticsearch-7.4.0/jdk

export PATH=$PATH:$JAVA_HOME/bin

# 保存退出后,重新加载profile

source /etc/profile

1、上传 安装包

# 上传es安装包

put e:/software/elasticsearch-7.4.0-linux-x86_64.tar.gz

2、执行解压操作 ,如下图

# 将elasticsearch-7.4.0-linux-x86_64.tar.gz解压到opt文件夹下. -C 大写

tar -zxvfelasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt

3、创建普通用户

因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令:

useradd itheima# 新增itheima用户

passwd  itheima# 为itheima用户设置密码

5、为新用户授权,如下图

chown-Ritheima:itheima /opt/elasticsearch-7.4.0#文件夹所有者

将 /opt/elasticsearch-7.4.0文件夹授权给itheima用户,由上图可见,我们的文件夹权限赋给了itheima

6、修改elasticsearch.yml文件

vim/opt/elasticsearch-7.4.0/config/elasticsearch.yml

# ======================== Elasticsearch Configuration =========================

cluster.name: my-application

node.name: node-1

network.host:0.0.0.0

http.port:9200

cluster.initial_master_nodes: ["node-1"]

cluster.name:配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称

node.name:节点名,elasticsearch会默认随机指定一个名字,建议指定一个有意义的名称,方便管理

network.host:设置为0.0.0.0允许外网访问

http.port:Elasticsearch的http访问端口

cluster.initial_master_nodes:初始化新的集群时需要此配置来选举master

7、修改配置文件

新创建的itheima用户最大可创建文件数太小,最大虚拟内存太小,切换到root用户,编辑下列配置文件, 添加类似如下内容

# 切换到root用户

su root

​#1. ===最大可创建文件数太小=======

vim/etc/security/limits.conf

# 在文件末尾中增加下面内容

itheima soft nofile65536

itheima hard nofile65536

# =====

vim/etc/security/limits.d/20-nproc.conf

# 在文件末尾中增加下面内容

itheima soft nofile65536

itheima hard nofile65536

*  hard    nproc4096

# 注:* 代表Linux所有用户名称



#2. ===最大虚拟内存太小=======

vim/etc/sysctl.conf

# 在文件中增加下面内容

vm.max_map_count=655360

# 重新加载,输入下面命令:

sysctl-p



8、启动elasticsearch

suitheima# 切换到itheima用户启动

./elasticsearch#启动

1.2 访问elasticsearch

1、在访问elasticsearch前,请确保防火墙是关闭的,执行命令:

#暂时关闭防火墙

systemctlstopfirewalld



# 或者



#永久设置防火墙状态

systemctl enable firewalld.service#打开防火墙永久性生效,重启后不会复原

systemctl disable firewalld.service#关闭防火墙,永久性生效,重启后不会复原

浏览器输入 http://192.168.149.135:9200/ ,如下图

此时elasticsearch已成功启动:

重点几个关注下即可:

number" : "7.4.0"   表示elasticsearch版本

lucene_version" : "8.2.0"  表示lucene版本

name : 默认启动的时候指定了 ES 实例名称

cluster_name : 默认名为 elasticsearch

以上是关于ElasticSearch7.4和jdk不兼容问题的主要内容,如果未能解决你的问题,请参考以下文章

lombok和jdk版本不兼容,将jdk12换成jdk1.8解决

tomcat9和jdk1.7兼容吗

eclipse版本和jdk的版本兼容问题

我的电脑安装jdk11版本显示不兼容,但是我们老师要求我们使用最新版的,怎么办?

tomcat与jdk兼容性的坑

请问Java的开发套件JDK8U341是否不支持Windows10了?