diff --git a/assembly/src/release/bin/activemq b/assembly/src/release/bin/activemq index 9aa1eeeeb16..acb42f90c67 100755 --- a/assembly/src/release/bin/activemq +++ b/assembly/src/release/bin/activemq @@ -198,8 +198,14 @@ if [ "$CONFIG_LOAD" != "yes" ];then echo fi +if [ -z "$ACTIVEMQ_OOM_OPTS" ] ; then + ACTIVEMQ_OOM_OPTS="-XX:+ExitOnOutOfMemoryError" + #ACTIVEMQ_OOM_DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=\"$ACTIVEMQ_DATA\" -XX:HeapDumpGzipLevel=6" + #ACTIVEMQ_OOM_OPTS="$ACTIVEMQ_OOM_OPTS $ACTIVEMQ_OOM_DUMP_OPTS" +fi + if [ -z "$ACTIVEMQ_OPTS" ] ; then - ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=\"$ACTIVEMQ_CONF\"/login.config" + ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY $ACTIVEMQ_OOM_OPTS -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=\"$ACTIVEMQ_CONF\"/login.config" fi diff --git a/assembly/src/release/bin/setenv b/assembly/src/release/bin/setenv index 799b640bc45..2442f899f36 100644 --- a/assembly/src/release/bin/setenv +++ b/assembly/src/release/bin/setenv @@ -31,10 +31,21 @@ # Set jvm memory configuration (minimal/maximum amount of memory) if [ -z "$ACTIVEMQ_OPTS_MEMORY" ] ; then - ACTIVEMQ_OPTS_MEMORY="-Xms64M -Xmx1G" + ACTIVEMQ_OPTS_MEMORY="-Xms64M -Xmx2G" fi + +# Terminate the JVM on OutOfMemoryError so the broker is not left running in a degraded state. +# Heap dump on OOM is disabled by default to avoid unexpected disk usage (especially with large +# heap sizes). Uncomment ACTIVEMQ_OOM_DUMP_OPTS to enable heap dumps; -XX:HeapDumpGzipLevel=6 +# requires JDK 17+. +if [ -z "$ACTIVEMQ_OOM_OPTS" ] ; then + ACTIVEMQ_OOM_OPTS="-XX:+ExitOnOutOfMemoryError" + #ACTIVEMQ_OOM_DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$ACTIVEMQ_DATA -XX:HeapDumpGzipLevel=6" + #ACTIVEMQ_OOM_OPTS="$ACTIVEMQ_OOM_OPTS $ACTIVEMQ_OOM_DUMP_OPTS" +fi + if [ -z "$ACTIVEMQ_OPTS" ] ; then - ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=$ACTIVEMQ_CONF/login.config" + ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS_MEMORY $ACTIVEMQ_OOM_OPTS -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=$ACTIVEMQ_CONF/login.config" fi if [ -z "$ACTIVEMQ_OUT" ]; then