Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Tomcat8 setenv.sh
#
# Cutom Environment Variables for Tomcat
#
############################################
export JAVA_HOME=/usr/lib/jvm/java-7-oracle/jre
export PATH=${JAVA_HOME}/bin:${PATH}
############################################
#
# JAVA_OPTS
# You could do all this in one export command
# But I am going to be long winded and explain
# Why and add links
#
# Oracle Notes
# - https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html
# - A good visual
# https://redstack.wordpress.com/2011/01/06/visualising-garbage-collection-in-the-jvm/
#############################################
# -server
# Select the java HotSpot Server JVM
# The 64-bit version of the JDK support only the Server VM,
# so in that case the option is implicit
# ... so it's redundant to today's world but it make me feel good.
export JAVA_OPTS="-server"
# -Xms/Xmx
# Xms Sets the initial size of the Heap
# Xmx sets the Maximum size of the Heap.
# http://stackoverflow.com/questions/16087153/what-happens-when-we-set-xmx-and-xms-equal-size
# http://crunchify.com/jvm-tuning-heapsize-stacksize-garbage-collection-fundamental/
export JAVA_OPTS="$JAVA_OPTS -Xms1024M -Xmx1024M"
# -NewSize/MaxNewSize
# Set the size of the young generation
# Most newly created objects are made here
# Objects taht did not become unreachbale and survice the young
# Generation heap are copied to the Old Generation
# See http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection
# https://redstack.wordpress.com/2011/01/06/visualising-garbage-collection-in-the-jvm/
export JAVA_OPTS="$JAVA_OPTS -XX:NewSize=512m -XX:MaxNewSize=512m"
# -PermSize/MaxPermSize
# Store classes and interned character strings
# http://stackoverflow.com/questions/12114174/what-does-xxmaxpermsize-do
# Warning!
# Decprecated in Java 8!! replace -XX:MetaspaceSize !!!
export JAVA_OPTS="$JAVA_OPTS -XX:PermSize=256m -XX:MaxPermSize=256m"
# -UseConcMarkSweepGC
# Also called the low latency GC since pausing time is very short
# When this is enabled it also enabled
# -XX:+UseParNewGC Potentially speed up your generation GC
# by a factor equal to the number of CPUS
# (see http://stackoverflow.com/questions/2101518/difference-between-xxuseparallelgc-and-xxuseparnewgc)
# http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/
export JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
# -XX:+CMSIncrementalMode
#
# I am not going to set this one but it's worthe mentioning
# It has been deprecated in Java 8. It is useful when you have 1 or 2
# CPU machine. It helps reduce latency by doing smaller garbage collections
# see thies sites for details
# http://www.fixdeveloper.com/2014/03/jvm-tuning-cmsincrementalmode-overrides.html
# http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#icms
# -CMSClassUnloadingEnabled
# In an old school java program classes are forever. But with
# Modern languages like Groovy... Classes are created at runtime, every
# scirpt may create a few new classes. With this set the PermGen space will
# Be garbage collecte3d. Without this you have a memory Leak.
#
# Must also have UseConcMarkSweepGC set for this to work.
#
# http://stackoverflow.com/questions/3334911/what-does-jvm-flag-cmsclassunloadingenabled-actually-do
export JAVA_OPTS="$JAVA_OPTS -XX:+CMSClassUnloadingEnabled"
# -DisableExlicitGC
# Explicit calls to System.gc() are completely ignored
#
# http://stackoverflow.com/questions/12847151/setting-xxdisableexplicitgc-in-production-what-could-go-wrong
export JAVA_OPTS="$JAVA_OPTS -XX:+DisableExplicitGC"
# -HeapDumpPath
# Set the file where the heap dump will write out its error
export JAVA_OPTS="$JAVA_OPTS -XX:HeapDumpPath=/10x13/logs/tomcat8/java_heapdump_pid_%p.log"
# -java.awt.headless
# Basically tell the JVM not to load awt libraries
# Your server is not a desktop app, there is more to this rule than that.
# If you want to go into it check out.
# https://blog.idrsolutions.com/2013/08/what-is-headless-mode-in-java/
# http://www.oracle.com/technetwork/articles/javase/headless-136834.html
export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
# -java.security.egd
# This one is abit of a debate
# If you don't set this it will use /dev/random on startup
# which can block and make tomcat startup slower.
# But it's technically more secure... but no one has shown
# a way to break the results of urandom which is faster.
# For more details see.
# http://www.2uo.de/myths-about-urandom/
export JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"
#################################################
# CATALINA_OPTS
# This are basically JAVA_OPTS but only used by tomcat
# and only run on Tomcat start see
# http://stackoverflow.com/questions/11222365/catalina-opts-vs-java-opts-what-is-the-difference
# for more details
#
################################################
# -jmcremot..
# Turn onthe jmxremote so you can use JConsole or VisualVM
# to monito the jvm remotely
# See
# https://tomcat.apache.org/tomcat-7.0-doc/monitoring.html
# http://www.mkyong.com/tomcat/jconsole-jmx-remote-access-on-tomcat/
# http://www.javaworld.com/article/2072322/from-jconsole-to-visualvm.html
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9090"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
#This gets the local IP address
IP_ADDR=`ip route get 8.8.8.8 | awk '{print $NF; exit}'`
export CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=$IP_ADDR"
export CATALINA_HOME=/10x13/apps/tomcat8
export CATALINA_OUT=/10x13/logs/tomcat8/catalina.out
export CATALINA_PID=/var/run/tomcat8/tomcat.pid
@mahamuniraviraj

This comment has been minimized.

Copy link

mahamuniraviraj commented Jun 26, 2017

thanks pal. I found it very useful.

@webshopboys

This comment has been minimized.

Copy link

webshopboys commented Sep 11, 2017

Big thankyou!

@kouzouigh

This comment has been minimized.

Copy link

kouzouigh commented Feb 1, 2018

Thanks for sharing !

@imtiaz-m4

This comment has been minimized.

Copy link

imtiaz-m4 commented Jul 5, 2018

What does this "/10x13/" means in the paths? Can you please elaborate. Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.