Nuclos Tomcat: setenv.sh, --JvmMx, JMX, NIO Connector, keytool, server.xml, tomcat-users.xml, Manager, CATALINA_HOME, Performance.

globe with meridians Sprache: Deutsch · English

open book Tomcat Administration

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>.

Java-VM-Startparameter

Ü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 setenv.bat nicht – siehe unten. Der Installer löscht eine vorhandene setenv.bat; sie muss nach dem Drüber-Installieren erneut abgelegt werden.

Windows-Dienst anpassen

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 -Xmx zu groß, startet der Dienst nicht – und lässt sich evtl. auch nicht stoppen (Reboot nötig).

NIO-Connector

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" />

HTTPS (SSL/TLS)

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 server.xml ein, setzt aber kein keyPass – bei nicht-leerem Schlüsselpasswort danach manuell ergänzen. Details zu Zertifikaten: SSL-Verschlüsselung.

WAR-Deployment über den Manager

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.

Weiteres

Verwandte Seiten

gear Konfiguration von Nuclos für hohes Benutzeraufkommen


Skalierung.

Öffnen →

gear SSL-Verschlüsselung


SSL.

Öffnen →