2017-05-17 2 views
2

Ich habe Tomcat 9 als Dienst unter Windows 7 64 Bit installiert. Ich mag:Wie ändere ich die Java-Heap-Größe für Tomcat 9, das als Windows-Dienst über die Befehlszeile installiert wurde?

  1. sehen, welche Speichergröße ist so eingestellt und aktiv
  2. Update die Service-Konfiguration beharrlich eine andere Heap-Größe verwenden
  3. überprüfen, ob Tomcat tatsächlich die neue Speichergröße verwenden.
  4. tun Sie das alles über die Befehlszeile.

Für 1 und 3: Ich naiv versuchte jconsole zu verwenden, aber ich weiß nicht, den Prozess dort finden, weil Tomcat als lokalen Systemdienst ausgeführt wird. Während ich herausgefunden habe, wie man jconsole als lokales Systemkonto ausführt, scheint JMX deaktiviert zu sein, wenn Tomcat als Dienst installiert wird.

So herauszufinden, die derzeit verwendeten Speichergrößen von JMX scheint zumindest sehr kompliziert zu sein (möglicherweise JMX remote aktivieren, die über TLS sein sollte ...).

für 2: Ich nehme an this die entsprechende Stelle der Tomcat-Dokumentation ist, der wie folgt lautet:

To update the service parameters, you need to use the //US// parameter. 

Update the service named 'Tomcat9' 
C:\> tomcat9 //US//Tomcat9 --Description="Apache Tomcat Server - http://tomcat.apache.org/ "^
     --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar 

Aber ich verstehe nicht, dass Text ausreichend es für mein Problem anzuwenden. Insbesondere möchte ich andere Parameter (wie Beschreibung, Startup usw.) nicht ändern.

Soweit ich weiß, wird die Konfiguration bei der Ausführung als Dienst in der Windows-Registrierung gespeichert, so dass die übliche Konfiguration in tomcat/conf nicht oder nur teilweise zutrifft.

Bitte beachten Sie, dass es sich bei dieser Frage nicht um die Installation von Tomcat handelt, sondern um die Änderung einer bestehenden Installation. Ich bin auch nicht an einem hacky Weg interessiert, um das gewünschte Ergebnis (irgendwie) zu bekommen, aber in der besten Praxis, das zu tun; und es wäre perfekt, Links zu Referenzdokumentationen dafür zu haben.

Antwort

0

in der Dokumentation, die Sie

angegebenen Link

--JvmMx

Maximum memory pool size in MB. (Not used in exe mode.)

sollte die Heap-Größe zu Kontrolle helfen.

Zum Abrufen der aktuellen Werte können Tools wie jvmtop die einfachste Antwort sein.

+0

Natürlich ist es ein JVM-Parameter, aber die Konfiguration dieses Parameters gehört zur Konfiguration des Tomcat9-Windows-Dienstes. Und wie ich bereits in der Frage gesagt habe, scheint es, dass die üblichen Batch-Dateien nicht (oder zumindest anders) verwendet werden. Wenn Sie den Abschnitt über dem zitierten Abschnitt lesen, werden Sie feststellen, dass die anfängliche Konfiguration auch nicht durch Ändern von Stapeldateien erfolgt. – Gustave

+0

Gibt es Feedback zu dem Werkzeug, mit dem ich Sie verlinkt habe? – GhostCat

+0

Wahrscheinlich wird es unter den beschriebenen Zugriffsproblemen leiden. Von seiner Github-Seite: "Überwachen Sie alle zugänglichen, laufenden jvms auf einer Maschine". (zugänglich!). Ich werde zuerst https://blogs.oracle.com/nbprofiler/monitoring-java-processes-running-as-a-windows-service versuchen. Dafür habe ich im Moment keine Zeit mehr. – Gustave

0

Für 1 und 3 gibt es jmap. Sie müssen nur die Prozess-ID der laufenden Tomcat-Instanz kennen.

jmap -heap 7082 

Hier ist die Ausgabe von einem laufenden Jvm ich jetzt haben (die entsprechenden Linien):

Heap Configuration: 
MinHeapFreeRatio = 0 
MaxHeapFreeRatio = 100 
MaxHeapSize   = 1073741824 (1024.0MB) // that is -Xmx flag 

.... 

NewSize    = 357564416 (341.0MB) // 1 
MaxNewSize   = 357564416 (341.0MB) 
OldSize    = 716177408 (683.0MB) // 2 

1 + 2 = -Xms flag 

Leider kann ich nicht 2 beantworten, da ich nie Kater auf Fenster begonnen haben - als Service (ich weiß kaum, was das für Windows bedeutet). Aber angenommen, dies ist ein Prozess, der von Windows als Skript gestartet wird ...

Sollte nicht: tomcat9 -Xms512M -Xmx2G... funktionieren? Nochmal, nur ein Hinweis, nicht sicher. Das letzte, was zu bemerken ist, dass der Heap nur beim Start des jvm geändert werden kann, das kann man zur Laufzeit nicht tun, während Tomcat offensichtlich läuft (nur für den Fall ...).

+0

Verwenden von Jmap Ich erhalte: Anhängen an Kern 4908 von ausführbaren Heap, bitte warten ... Fehler beim Anhängen an Kerndatei: Windbg Fehler: OpenDumpFile fehlgeschlagen! – Gustave

+0

Wahrscheinlich der gleiche Grund wie oben für jconsole beschrieben. – Gustave

Verwandte Themen