Systemanalyse
Systemanalyse
Die MACH formsolutions Plattform wird in verschiedenen Varianten in unterschiedlichsten Systemumgebungen betrieben. Ebenso individuell wie die Installation ist die Nutzung jeden einzelnen Servers durch eine Vielzahl verschiedener Mandanten. Leider kommt es durch diese Vielzahl an Kombinationen gelegentlich zu Problemen, die im Entwicklungsprozess nicht vorhergesagt wurden. Um die Lösung dieser Probleme möglichst zielgerichtet und effizient umzusetzen, bitten wir Sie, uns mit den folgenden Maßnahmen zu unterstützen.
Apache-Access-Log
Mit einer Erweiterung des Access-Logs ist es möglich zu ermitteln, welche Anfragen besonders langsam verarbeitet werden. Dazu muss in der Konfiguration ein neues Log-Format erstellt und referenziert werden, z. B.:
ErrorLog /var/log/apache2/kundenbereich.error.log
CustomLog /var/log/apache2/kundenbereich.access.log combined_fs
Flight Recording
In aktuellen JDK-Versionen kann zur Laufzeit ein- und ausgeschaltet werden, ohne den Ablauf spürbar zu verlangsamen. Dies kann besonders bei der Analyse von Ressourcen-Engpässen und Performance-Problemen helfen.
- Prozess-ID des WildFly-Applikationsservers ermitteln: jps
- Tracing starten: jcmd <Prozess-ID> JFR.start
- Einige Minuten warten.
- Trace dumpen: jcmd <Prozess-ID> JFR.dump name=1 filename=/tmp/$(date +%Y%m%d-%H%M).jfr
- Trace stoppen: jcmd <Prozess-ID> JFR.stop name=1
Hinweis: Bei einem Docker-basierten System müssen diese Befehle im wildfly-Container ausgeführt und das Ergebnis herauskopiert werden, z. B.:
docker-compose exec wildfly bash
<siehe oben>
exit
docker cp fs_wildfly_1:/tmp/$(date +%Y%m%d-%H%M).jfr .
Stackdump
Um zu prüfen, welche Prozesse in der Anwendung gerade aktiv sind und ggf. nicht korrekt beendet werden, können ein paar Stackdumps mit etwas Zeitversatz herangezogen werden.
- Prozess-ID des WildFly-Applikationsservers ermitteln: jps
- Stackdump erzeugen: jstack <Prozess-ID> > /tmp/$(date +%Y%m%d-%H%M)-stack.txt
Hinweis:
Bei einem Docker-basierten System müssen diese Befehle im wildfly-Container ausgeführt und das Ergebnis herauskopiert werden, z. B.:
docker-compose exec wildfly bash
<siehe oben>
exit
docker cp fs_wildfly_1:/tmp/$(date +%Y%m%d-%H%M)-stack.txt .
Heapdump
Sollte ein Problem mit der Speicherauslastung auftreten, kann mittels eines Heapdump festgestellt werden, welche Daten ggf. unabsichtlich den Speicher auslasten.
- Prozess-ID des WildFly-Applikationsservers ermitteln: jps
- Heapdump erzeugen: jmap -dump:live,format=b,file=/tmp/$(date +%Y%m%d-%H%M)-heap.bin <Prozess-ID>
Achtung Heapdumps können mehrere Gigabyte groß werden und personenbezogene Daten beinhalten.
Hinweis:
Bei einem Docker-basierten System müssen diese Befehle im wildfly-Container ausgeführt und das Ergebnis herauskopiert werden, z. B.:
docker-compose exec wildfly bash
<siehe oben>
exit
docker cp fs_wildfly_1:/tmp/$(date +%Y%m%d-%H%M)-heap.bin .