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解决