- 添加一下几行内容
- 使用ES内置的jdk
- 添加jdk判断
- 完整的配置文件elasticsearch
- !/bin/bash
- CONTROLLING STARTUP:
- This script relies on a few environment variables to determine startup
- behavior, those variables are:
- ES_PATH_CONF — Path to config directory
- ES_JAVA_OPTS — External Java Opts on top of the defaults set
- Optionally, exact memory values can be set using the
ES_JAVA_OPTS
. Note that - the Xms and Xmx lines in the JVM options file must be commented out. Example
- values are “512m”, and “10g”.
- ES_JAVA_OPTS=”-Xms8g -Xmx8g” ./bin/elasticsearch
- 使用ES内置的jdk
- 添加jdk判断
- manual parsing to find out, if process should be detached
- 完整jvm.options配置
- 完整jvm.options配置
- IMPORTANT: JVM heap size
- #
- #
- #
- #
- Xms represents the initial size of total heap space
- Xmx represents the maximum size of total heap space
- Expert settings
- #
- #
- GC configuration
- -XX:+UseConcMarkSweepGC
- NOTE: G1GC is only supported on JDK version 10 or later.
- To use G1GC uncomment the lines below.
- 10-:-XX:-UseConcMarkSweepGC
- 10-:-XX:-UseCMSInitiatingOccupancyOnly
- 10-:-XX:+UseG1GC
- 10-:-XX:InitiatingHeapOccupancyPercent=75
- cache ttl in seconds for positive DNS lookups noting that this overrides the
- JDK security property networkaddress.cache.ttl; set to -1 to cache forever
- cache ttl in seconds for negative DNS lookups noting that this overrides the
- JDK security property networkaddress.cache.negative ttl; set to -1 to cache
- forever
- pre-touch memory pages used by the JVM during initialization
- explicitly set the stack size
- set to headless, just in case
- ensure UTF-8 encoding by default (e.g. filenames)
- use our provided JNA always versus the system one
- turn off a JDK optimization that throws away stack traces for common
- exceptions because stack traces are important for debugging
- flags to configure Netty
- log4j 2
- generate a heap dump when an allocation from the Java heap fails
- heap dumps are created in the working directory of the JVM
- specify an alternative path for heap dumps; ensure the directory exists and
- has sufficient space
- specify an alternative path for JVM fatal error logs
- JDK 9+ GC logging
- due to internationalization enhancements in JDK 9 Elasticsearch need to set the provider to COMPAT otherwise
- time/date parsing will break in an incompatible way for some date patterns and locals
汇总:采用最简单的办法,就是在elasticsearch文件开头添加上这一行export JAVA_HOME=/home/vdb1/elastic_cluster/elasticsearch-7.3.0_node/elasticsearch-7.3.0_node1/jdk/系统自带的jdk是jdk8,但是ES7.3内置的jdk是12,因此使用ES内置的jdk版本,并相应的修改垃圾内存回收机制
Java (JVM) Versionedit
Elasticsearch is built using Java, and includes a bundled version of OpenJDK from the JDK maintainers (GPLv2+CE) within each distribution. The bundled JVM is the recommended JVM and is located within the jdk directory of the Elasticsearch home directory. To use your own version of Java, set the JAVA_HOME environment variable. If you must use a version of Java that is different from the bundled JVM, we recommend using a supported LTS version of Java. Elasticsearch will refuse to start if a known-bad version of Java is used. The bundled JVM directory may be removed when using your own JVM. Elasticsearch是使用Java构建的,并且在每个发行版中都包含来自JDK维护者(GPLv2 + CE)的捆绑版本的 OpenJDK。捆绑的JVM是推荐的JVM,位于jdkElasticsearch主目录的目录内。 要使用自己的Java版本,请设置JAVA_HOME环境变量。如果必须使用与捆绑的JVM不同的Java版本,则建议使用受支持 的Java LTS版本。如果使用已知的Java错误版本,Elasticsearch将拒绝启动。使用您自己的JVM时,可以删除捆绑的JVM目录。
修改配置文件
ES程序路径:/home/vdb1/elastic_cluster/elasticsearch-7.3.0_node/elasticsearch-7.3.0_node1 cd bin vim elasticsearch
添加一下几行内容
使用ES内置的jdk
export JAVA_HOME=/home/vdb1/elastic_cluster/elasticsearch-7.3.0_node/elasticsearch-7.3.0_node1/jdk/ export PATH=$JAVA_HOME/bin:$PATH
添加jdk判断
if [ -x “$JAVA_HOME/bin/java” ]; then
JAVA="/home/vdb1/elastic_cluster/elasticsearch-7.3.0_node/elasticsearch-7.3.0_node1/jdk/bin/java"
else
JAVA=`which java`
fi
完整的配置文件elasticsearch
完整的配置文件elasticsearch
!/bin/bash
CONTROLLING STARTUP:
#
This script relies on a few environment variables to determine startup
behavior, those variables are:
#
ES_PATH_CONF — Path to config directory
ES_JAVA_OPTS — External Java Opts on top of the defaults set
#
Optionally, exact memory values can be set using the
ES_JAVA_OPTS
. Note thatthe Xms and Xmx lines in the JVM options file must be commented out. Example
values are “512m”, and “10g”.
#
ES_JAVA_OPTS=”-Xms8g -Xmx8g” ./bin/elasticsearch
使用ES内置的jdk
export JAVA_HOME=/home/vdb1/elastic_cluster/elasticsearch-7.3.0_node/elasticsearch-7.3.0_node1/jdk/ export PATH=$JAVA_HOME/bin:$PATH
source “
dirname "$0"
“/elasticsearch-envif [ -z “$ES_TMPDIR” ]; then ES_TMPDIR=
"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory
fiES_JVM_OPTIONS=”$ES_PATH_CONF”/jvm.options JVM_OPTIONS=
"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"
ES_JAVA_OPTS=”${JVM_OPTIONS//\${ES_TMPDIR}/$ES_TMPDIR}”添加jdk判断
if [ -x “$JAVA_HOME/bin/java” ]; then JAVA=”/home/vdb1/elastic_cluster/elasticsearch-7.3.0_node/elasticsearch-7.3.0_node1/jdk/bin/java” else JAVA=
which java
fimanual parsing to find out, if process should be detached
if ! 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” \ -Des.distribution.flavor=”$ES_DISTRIBUTION_FLAVOR” \ -Des.distribution.type=”$ES_DISTRIBUTION_TYPE” \ -Des.bundled_jdk=”$ES_BUNDLED_JDK” \ -cp “$ES_CLASSPATH” \ org.elasticsearch.bootstrap.Elasticsearch \ “$@” else exec \ “$JAVA” \ $ES_JAVA_OPTS \ -Des.path.home=”$ES_HOME” \ -Des.path.conf=”$ES_PATH_CONF” \ -Des.distribution.flavor=”$ES_DISTRIBUTION_FLAVOR” \ -Des.distribution.type=”$ES_DISTRIBUTION_TYPE” \ -Des.bundled_jdk=”$ES_BUNDLED_JDK” \ -cp “$ES_CLASSPATH” \ org.elasticsearch.bootstrap.Elasticsearch \ “$@” \ <&- & retval=$? pid=$! [ $retval -eq 0 ] || exit $retval if [ ! -z “$ES_STARTUP_SLEEP_TIME” ]; then sleep $ES_STARTUP_SLEEP_TIME fi if ! ps -p $pid > /dev/null ; then exit 1 fi exit 0 fi
exit $?
启动ES后有个警告信息:OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release. 这是提醒你 cms 垃圾收集器在 jdk9 就开始被标注为 @deprecated
- 修改jvm.options
将 : -XX:+UseConcMarkSweepGC 改为:-XX:+UseG1GC
完整jvm.options配置
完整jvm.options配置
JVM configuration
#
IMPORTANT: JVM heap size
#
#
You should always set the min and max JVM heap
size to the same value. For example, to set
the heap to 4 GB, set:
#
-Xms4g
-Xmx4g
#
See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
for more information
#
#
Xms represents the initial size of total heap space
Xmx represents the maximum size of total heap space
-Xms2g -Xmx2g
#
Expert settings
#
#
All settings below this section are considered
expert settings. Don’t tamper with them unless
you understand what you are doing
#
#
GC configuration
-XX:+UseConcMarkSweepGC
-XX:+UseG1GC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly
G1GC Configuration
NOTE: G1GC is only supported on JDK version 10 or later.
To use G1GC uncomment the lines below.
10-:-XX:-UseConcMarkSweepGC
10-:-XX:-UseCMSInitiatingOccupancyOnly
10-:-XX:+UseG1GC
10-:-XX:InitiatingHeapOccupancyPercent=75
DNS cache policy
cache ttl in seconds for positive DNS lookups noting that this overrides the
JDK security property networkaddress.cache.ttl; set to -1 to cache forever
-Des.networkaddress.cache.ttl=60
cache ttl in seconds for negative DNS lookups noting that this overrides the
JDK security property networkaddress.cache.negative ttl; set to -1 to cache
forever
-Des.networkaddress.cache.negative.ttl=10
optimizations
pre-touch memory pages used by the JVM during initialization
-XX:+AlwaysPreTouch
basic
explicitly set the stack size
-Xss1m
set to headless, just in case
-Djava.awt.headless=true
ensure UTF-8 encoding by default (e.g. filenames)
-Dfile.encoding=UTF-8
use our provided JNA always versus the system one
-Djna.nosys=true
turn off a JDK optimization that throws away stack traces for common
exceptions because stack traces are important for debugging
-XX:-OmitStackTraceInFastThrow
flags to configure Netty
-Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0
log4j 2
-Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true
-Djava.io.tmpdir=${ES_TMPDIR}
heap dumps
generate a heap dump when an allocation from the Java heap fails
heap dumps are created in the working directory of the JVM
-XX:+HeapDumpOnOutOfMemoryError
specify an alternative path for heap dumps; ensure the directory exists and
has sufficient space
-XX:HeapDumpPath=data
specify an alternative path for JVM fatal error logs
-XX:ErrorFile=logs/hs_err_pid%p.log
JDK 8 GC logging
8:-XX:+PrintGCDetails 8:-XX:+PrintGCDateStamps 8:-XX:+PrintTenuringDistribution 8:-XX:+PrintGCApplicationStoppedTime 8:-Xloggc:logs/gc.log 8:-XX:+UseGCLogFileRotation 8:-XX:NumberOfGCLogFiles=32 8:-XX:GCLogFileSize=64m
JDK 9+ GC logging
9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
due to internationalization enhancements in JDK 9 Elasticsearch need to set the provider to COMPAT otherwise
time/date parsing will break in an incompatible way for some date patterns and locals
9-:-Djava.locale.providers=COMPAT