本文共 2034 字,大约阅读时间需要 6 分钟。
针对Elasticsearch 7.3.1在虚拟机中运行时的Java版本要求进行了优化。以下是详细的解决方案:
Elasticsearch 7.3.1确实要求使用Java 11及以上版本。在实际操作中,虽然Java 8仍然可用,但推荐遵循_Elasticsearch 官方文档中的推荐设置,以确保最佳性能和兼容性。
为了满足Elasticsearch的要求,首先需安装Java 11。以下是详细的操作步骤:
# 下载JDK 11wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz# 解压并安装tar -xzvf jdk-11.0.1_linux-x64_bin.tar.gz /usr/local/
注意:如果已经有其他JDK版本安装,建议清理旧版本,以避免版本冲突。
为了确保Elasticsearch使用正确的JDK版本,需修改启动脚本文件(如elasticsearch-env.sh)中的相关参数:
#!/bin/bash# Define tmp directorysource "`dirname "$0"`"/elasticsearch-env# 检查是否是JDK 11if [ -x "/opt/jdk-11.0.1/bin/java" ]; then JAVA="/opt/jdk-11.0.1/bin/java"else JAVA=`which java`fi# Define JVM options to include G1GCES_JVM_OPTIONS="$ES_PATH_CONF/jvm.options"JVM_OPTIONS=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"`# Update JVM options with tmp directoryES_JAVA_OPTS="${JVM_OPTIONS//${ES_TMPDIR}/$ES_TMPDIR}"# Determine if process should run in backgroundif ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then exec "$JAVA" $ES_JAVA_OPTS -Des.path.home="$ES_HOME" -Des.path.conf="$ES_PATH_CONF" -cp "$ES_CLASSPATH" org.elasticsearch.bootstrap.Elasticsearch "$@"else exec "$JAVA" $ES_JAVA_OPTS -Des.path.home="$ES_HOME" -Des.path.conf="$ES_PATH_CONF" -cp "$ES_CLASSPATH" org.elasticsearch.bootstrap.Elasticsearch "$@" > /dev/null &fi
为了优化Elasticsearch的性能,建议优化垃圾回收策略。修改jvm.options文件,添加以下参数:
# 在GC配置部分添加以下内容-XX:+UseG1GC# 去掉 -XX:+UseConcMarkSweepGC# 其他G1GC配置(如Heap size and initiation percent)
在启动脚本中,需确保使用正确的JVM参数。示例中的脚本已经包含了对未来版本的适配配置,至关重要的一点是正确的垃圾回收器的选择,以避免性能问题。
完成以上配置后,运行以下命令启动Elasticsearch:
# 使用修改后的脚本启动./bin/elasticsearch -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/opt/elasticsearch/tmp
在遇到问题时,查阅logs/hs_err_pid<pid>.log
中的错误日志,能够帮助快速定位问题根源。
通过以上步骤,正确配置了Elasticsearch 7.3.1的运行环境,消除了Java版本兼容性的警告,同时优化了垃圾回收策略,以提升应用程序的性能表现。
转载地址:http://seeyk.baihongyu.com/