openstack-ansible-ops/elk_metrics_6x/templates/jvm.options.j2
Kevin Carter 6017fc0e89 Add the ability to set the JVM heap size
This change makes it possible for users to set the `elastic_heap_size_default`
value. Before this change, the option was unreachable due to a series of facts
ganerated template values. The options `elastic_heap_size` or `logstash_heap_size`
have also been exposed giving deployers the ability to define service specific
heap sizes as needed.

Change-Id: Ida3a57fdcff388f8e4bb3f325b787205a6183970
Signed-off-by: Kevin Carter <kevin@cloudnull.com>
2019-01-30 09:53:20 -06:00

96 lines
2.5 KiB
Django/Jinja

## JVM configuration
{% if _service_heap_size is defined %}
{% set heap_size = _service_heap_size %}
{% else %}
{% if (not (elasticsearch_node_master | default(master_node)) | bool) and (not (elasticsearch_node_data | default(data_node)) | bool) %}
{% set heap_size = elastic_heap_size_default | default((_elastic_heap_size_default | int) // 2) %}
{% else %}
{% set heap_size = elastic_heap_size_default | default(_elastic_heap_size_default | int) %}
{% endif %}
{% endif %}
# Xms represents the initial size of total heap space
-Xms{{ heap_size }}m
# Xmx represents the maximum size of total heap space
-Xmx{{ heap_size }}m
# Sets the thread stack size
-Xss1m
################################################################
## 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
{% if ((heap_size | int) > 6144) and (elastic_g1gc_enabled | bool) %}
-XX:+UseG1GC
-XX:MaxGCPauseMillis=400
-XX:InitiatingHeapOccupancyPercent=75
{% else %}
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
{% endif %}
## optimizations
# disable calls to System#gc
-XX:+DisableExplicitGC
## locale
# Set the locale language
#-Duser.language=en
# Set the locale country
#-Duser.country=US
# Set the locale variant, if any
#-Duser.variant=
## basic
# set the I/O temp directory
-Djava.io.tmpdir={{ temp_dir }}
# 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
## 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=${LOGSTASH_HOME}/heapdump.hprof
## GC logging
#-XX:+PrintGCDetails
#-XX:+PrintGCTimeStamps
#-XX:+PrintGCDateStamps
#-XX:+PrintClassHistogram
#-XX:+PrintTenuringDistribution
#-XX:+PrintGCApplicationStoppedTime
# log GC status to a file with time stamps
# ensure the directory exists
#-Xloggc:${LS_GC_LOG_FILE}
#listen on IPv4 addresses
-Djava.net.preferIPv4Stack=true
# Disable log4j because its not supported by elastic
-Dlog4j2.disable.jmx=true