zoukankan      html  css  js  c++  java
  • Elasticsearch7.3使用内置的JDK12

    汇总:采用最简单的办法,就是在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
    
    #!/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
    
    
    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-env
    
    if [ -z "$ES_TMPDIR" ]; then
      ES_TMPDIR=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
    fi
    
    ES_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`
    fi
    
    
    # manual 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 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
    
    
  • 相关阅读:
    玩转树莓派《二》——用python实现动画与多媒体
    pygame(一)
    玩转树莓派(一)
    pythonchallenge(七)
    springmvc定时器
    maven打包成第三方jar包且把pom依赖包打入进来
    mybatis之动态SQL
    黑马12期day01之html&css
    千万级数据表删除特定字断
    自动跳转
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/11976046.html
Copyright © 2011-2022 走看看