Nuclos Tomcat: setenv.sh, --JvmMx, JMX, NIO Connector, keytool, server.xml, tomcat-users.xml, Manager, CATALINA_HOME, Performance. |
Sprache: Deutsch · English
Tomcat für Nuclos betreiben und tunen – VM-Parameter, Windows-Dienst, NIO-Connector, HTTPS, Manager-Deployment und mehr.
Auf dieser Seite |
Diese Seite bündelt fortgeschrittene Tomcat-Themen für Performance und Betrieb. In einer Nuclos-Installation liegt Tomcat unter <nuclos>/tomcat/apache-tomcat-<version>.
Über die VM-Parameter steuerst du Heap und GC (Performance-Tuning, Vermeidung von OutOfMemoryError). Auf 32-bit-Systemen -Xmx auf höchstens 1536m setzen. Am einfachsten über eine Datei setenv.sh (Linux) bzw. setenv.bat (Windows) im bin-Verzeichnis:
# Created by Thomas Pasch # see catalina.sh for explanation JAVA_OPTS="" CATALINA_OPTS="-server -ea -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+UseThreadPriorities -Xmx1236m -Xms512m -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -XX:+TraceClassUnloading" # http://www.theserverside.com/discussions/thread.tss?thread_id=63241 #-Xloggc:$CATALINA_HOME/logs/gc.log or Xloggc:%CATALINA_HOME%/logs/gc.log #-XX:+PrintHeapAtGC #-XX:+PrintGCDetails #-XX:+PrintGCTimeStamps #-XX:-HeapDumpOnOutOfMemoryError #-XX:+UseConcMarkSweepGC #-XX:-TraceClassUnloading # http://stackoverflow.com/questions/202502/appropriate-tomcat-5-5-start-up-parameters-to-tune-jvm-for-extremely-high-demand # http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html # http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html |
Für den Windows-Dienst gilt |
Die VM-Parameter des installierten Dienstes werden per Skript gesetzt. Start-/Max-Heap ausschließlich über --JvmMs/--JvmMx (nicht zusätzlich über -Xms/-Xmx, sonst doppelte Übergabe). Die JMX-Parameter sind nötig, um den Serverprozess mit jvisualvm zu überwachen (siehe Speicherabbild):
set CATALINA_HOME=C:\Nuclos3.6\tomcat\apache-tomcat-7.0.28 set CATALINA_BASE=%CATALINA_HOME% set JAVA_HOME=C:\Program Files\Java\jre6 C:\Nuclos3.6\bin\nuclosx64.exe //US//nuclos.nuclos --JvmOptions "-Dcom.sun.management.jmxremote.port=30333#-Dcom.sun.management.jmxremote.ssl=false#-Dcom.sun.management.jmxremote.authenticate=false#-Dcatalina.base=%CATALINA_BASE%#-Dcatalina.home=%CATALINA_HOME%#-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed#-Djava.io.tmpdir=%CATALINA_BASE%\temp#-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager#-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties#-ea#-XX:PermSize=128M#-XX:MaxPermSize=256M#-XX:+UseThreadPriorities#-XX:+PrintGCTimeStamps#-XX:+HeapDumpOnOutOfMemoryError#-XX:+TraceClassUnloading" --JvmMs=512m --JvmMx=2048m --StartMode=jvm --StopMode=jvm --Startup=manual --Classpath "%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_HOME%\bin\tomcat-juli.jar" --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop |
VM-Parameter erst testen: Ist |
In conf/server.xml das Protokoll auf den NIO-Connector umstellen (bessere Performance):
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" redirectPort="8443" /> |
Keystore erzeugen und Connector konfigurieren:
keytool -genkeypair -keystore .keystore -alias mykey -storepass storepw -keypass keypw |
<Connector SSLEnabled="true" clientAuth="false"
keystoreFile="/path/.keystore" keystorePass="storepw"
keyPass="keypw" keyAlias="mykey" maxThreads="150"
port="8443" protocol="HTTP/1.1" scheme="https" secure="true"
sslProtocol="TLS"/> |
Der Installer richtet HTTPS in |
Der Tomcat-Manager erlaubt das Deployen von WARs (auch remote). Dazu tomcat-users.xml in CATALINA_BASE/conf anpassen:
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user password="nuclos" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" username="nuclos"/>
</tomcat-users> |
Da die Nuclos-WARs groß sind, in CATALINA_HOME/webapps/manager/WEB-INF/web.xml max-file-size (und ggf. max-request-size) erhöhen.
CATALINA_HOME und CATALINA_BASE.