So zeichnen Sie JFR (Java Flight Recorder) auf und geben eine Dump-Datei aus

Wir werden vorstellen, wie JFR (Java Flight Recorder) aufgezeichnet und eine Dump-Datei ausgegeben wird. Hier wird der Status von ** Eclipse GlassFish 5.1.0 ** aufgezeichnet.

Umgebung

[glassfish@CENTOS7 ~]$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[glassfish@CENTOS7 ~]$
[glassfish@CENTOS7 ~]$ java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
[glassfish@CENTOS7 ~]$
[glassfish@CENTOS7 ~]$ /opt/glassfish5/glassfish/bin/asadmin version
Version string could not be obtained from Server [localhost:4848].
(Turn debugging on e.g. by setting AS_DEBUG=true in your environment, to see the details.)
Using locally retrieved version string from version class.
Version = GlassFish Server Open Source Edition  5.1.0  (build default-private)
Command version executed successfully.
[glassfish@CENTOS7 ~]$

Informationen zur Installation von ** GlassFish 5.1.0 ** finden Sie unter Installieren von Eclipse GlassFish 5.1.0 unter CentOS 7. Bitte gib mir.

1. Festlegen der JVM-Optionen beim Starten von Glassfish

Fügen Sie den JVM-Optionen Folgendes hinzu, wenn Sie Glassfish starten.

Insbesondere "domain / configs / java-config" von "domain.xml" unter "/ opt / glassfish5 / glassfish / domain / domain1 / config" (Java-config-Tag im configs-Tag im Domain-Tag) Fügen Sie die folgenden 3 Zeilen zu (innen) hinzu.

/opt/glassfish5/glassfish/domains/domain1/config/domain.Zu XML hinzufügen


<jvm-options>-XX:+UnlockCommercialFeatures</jvm-options>
<jvm-options>-XX:+FlightRecorder</jvm-options>
<jvm-options>-XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/var/log/jvm/repositories,maxsize=2048m,maxage=25h,dumponexit=true,dumponexitpath=/var/log/jvm/dump.jfr</jvm-options>

Hier wird / var / log / jvm als temporäres Verzeichnis verwendet. Erstellen Sie also ein jvm-Verzeichnis unter / var / log, und der Glassfish-Benutzer kann Dateien und Dateien unter / var / log / jvm erstellen. Stellen Sie sicher, dass Sie das Verzeichnis erstellen können.

Ausführungsergebnis


[glassfish@CENTOS7 ~]$ su
Passwort:
[root@CENTOS7 glassfish]# cd /var/log
[root@CENTOS7 log]#
[root@CENTOS7 log]# mkdir jvm
[root@CENTOS7 log]# chown glassfish:glassfish jvm
[root@CENTOS7 log]# exit
exit
[glassfish@CENTOS7 ~]$

2. Starten Sie Glassfish

Starten Sie Glassfish mit dem folgenden Befehl.

/opt/glassfish5/glassfish/bin/asadmin start-domain domain1

Ausführungsergebnis


[glassfish@CENTOS7 config]$ /opt/glassfish5/glassfish/bin/asadmin start-domain domain1
Waiting for domain1 to start ......
Successfully started the domain : domain1
domain  Location: /opt/glassfish5/glassfish/domains/domain1
Log File: /opt/glassfish5/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
[glassfish@CENTOS7 config]$

3. Ausgabe der JFR-Dump-Datei

Überprüfen Sie zunächst die Prozess-ID von Glassfish mit dem folgenden Befehl.

ps -ef | grep glassfish | grep -v grep

Ausführungsergebnis


[glassfish@CENTOS7 config]$ ps -ef | grep glassfish | grep -v grep
glassfi+ 26302     1  5 19:54 pts/0    00:00:16 /usr/java/jdk1.8.0_241-amd64/bin/java -cp /opt/glassfish5/glassfish/modules/glassfish.jar -XX:+UnlockCommercialFeatures -XX:+UnlockDiagnosticVMOptions -XX:NewRatio=2 -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/var/log/jvm/repositories,maxsize=2048m,maxage=25h,dumponexit=true,dumponexitpath=/var/log/jvm/dump.jfr -XX:+FlightRecorder -XX:MaxPermSize=192m -Xmx512m -javaagent:/opt/glassfish5/glassfish/lib/monitor/flashlight-agent.jar -client -Djavax.xml.accessExternalSchema=all -Djavax.net.ssl.trustStore=/opt/glassfish5/glassfish/domains/domain1/config/cacerts.jks -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djdk.corba.allowOutputStreamSubclass=true -Dfelix.fileinstall.dir=/opt/glassfish5/glassfish/modules/autostart/ -Dorg.glassfish.additionalOSGiBundlesToStart=org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command,org.apache.felix.shell.remote,org.apache.felix.fileinstall -Dcom.sun.aas.installRoot=/opt/glassfish5/glassfish -Dfelix.fileinstall.poll=5000 -Djava.endorsed.dirs=/opt/glassfish5/glassfish/modules/endorsed:/opt/glassfish5/glassfish/lib/endorsed -Djava.security.policy=/opt/glassfish5/glassfish/domains/domain1/config/server.policy -Dosgi.shell.telnet.maxconn=1 -Dfelix.fileinstall.bundles.startTransient=true -Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory -Dfelix.fileinstall.log.level=2 -Djavax.net.ssl.keyStore=/opt/glassfish5/glassfish/domains/domain1/config/keystore.jks -Djava.security.auth.login.config=/opt/glassfish5/glassfish/domains/domain1/config/login.conf -Dfelix.fileinstall.disableConfigSave=false -Dfelix.fileinstall.bundles.new.start=true -Dcom.sun.aas.instanceRoot=/opt/glassfish5/glassfish/domains/domain1 -Dosgi.shell.telnet.port=6666 -Dgosh.args=--nointeractive -Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as -Dosgi.shell.telnet.ip=127.0.0.1 -DANTLR_USE_DIRECT_CLASS_LOADING=true -Djava.awt.headless=true -Dcom.ctc.wstx.returnNullForDefaultNamespace=true -Djava.ext.dirs=/usr/java/jdk1.8.0_241-amd64/lib/ext:/usr/java/jdk1.8.0_241-amd64/jre/lib/ext:/opt/glassfish5/glassfish/domains/domain1/lib/ext -Djdbc.drivers=org.apache.derby.jdbc.ClientDriver -Djava.library.path=/opt/glassfish5/glassfish/lib:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib com.sun.enterprise.glassfish.bootstrap.ASMain -upgrade false -domaindir /opt/glassfish5/glassfish/domains/domain1 -read-stdin true -asadmin-args --host,,,localhost,,,--port,,,4848,,,--secure=false,,,--terse=false,,,--echo=false,,,--interactive=true,,,start-domain,,,--verbose=false,,,--watchdog=false,,,--debug=false,,,--domaindir,,,/opt/glassfish5/glassfish/domains,,,domain1 -domainname domain1 -instancename server -type DAS -verbose false -asadmin-classpath /opt/glassfish5/glassfish/lib/client/appserver-cli.jar -debug false -asadmin-classname com.sun.enterprise.admin.cli.AdminMain
[glassfish@CENTOS7 config]$

Sie können sehen, dass die Prozess-ID "26302" ist.

Geben Sie den JFR-Datensatz (Java Flight Recorder) mit dem folgenden Befehl in eine Speicherauszugsdatei aus.

jcmd JFR.dump-Aufzeichnung = 0 Dateiname = `

Ausführungsergebnis


[glassfish@CENTOS7 ~]$ jcmd 26302 JFR.dump recording=0 filename=/home/glassfish/perf/test_$(date "+%Y%m%d_%H%M%S").jfr
26302:
Dumped recording 0, 2.5 MB written to:

/home/glassfish/perf/test_20200726_200546.jfr
[glassfish@CENTOS7 ~]$

Überprüfen Sie die Ausgabedump-Datei.

Ausführungsergebnis


[glassfish@CENTOS7 ~]$ cd /home/glassfish/perf
[glassfish@CENTOS7 perf]$ ls -l
Insgesamt 2600
-rw-rw-r--.1 Glasfisch Glasfisch 2660207 26. Juli 20:05 test_20200726_200546.jfr
[glassfish@CENTOS7 perf]$

3. Siehe die von "jmc.exe" ausgegebene Dump-Datei (jfr-Datei).

Übertragen Sie die Ausgabe-jfr-Dump-Datei (test_20200726_200546.jfr) auf einen Windows-PC, auf dem jdk1.8 installiert ist.

Starten Sie "jmc.exe" (Java Mission Contorol) unter "C: \ Programme \ Java \ jdk1.8.0_231 \ bin".

01.png

Öffnen Sie die Ausgabe der jfr-Dump-Datei (test_20200726_200546.jfr), indem Sie im Menü "Datei" - "Datei öffnen" auswählen.

02.png

03.png

Sie können auf die von "jmc.exe" (Java Mission Contorol) ausgegebene jfr-Dump-Datei verweisen.

04.png

Referenz

Java Platform, Standard Edition Tools-Referenz

Recommended Posts

So zeichnen Sie JFR (Java Flight Recorder) auf und geben eine Dump-Datei aus
[Java] Wie man Dateien ausgibt und schreibt!
So komprimieren Sie eine JAVA-CSV-Datei und verwalten sie in einem Byte-Array
So springen Sie von Eclipse Java zu einer SQL-Datei
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So konvertieren Sie eine Datei in ein Byte-Array in Java
So entwickeln und registrieren Sie eine Sota-App in Java
So erstellen Sie einen Java-Container
Ich habe Java Flight Recorder (JFR) überprüft.
Protokollausgabe in Datei in Java
So erstellen Sie ein Java-Array
So laden Sie eine Spring-Upload-Datei und zeigen ihren Inhalt an
So lesen Sie eine Datei und behandeln sie als Standardeingabe
Konvertieren Sie Excel mit Java in Blob, speichern Sie es, lesen Sie es aus der Datenbank und geben Sie es als Datei aus!
So erstellen Sie eine Java-Kalenderzusammenfassung
[Java] Verwendung der File-Klasse
[Einführung in Java] So schreiben Sie ein Java-Programm
Wie erstelle ich einen Discord Bot (Java)
So geben Sie eine Java-Zeichenfolge auf dem Konsolenbildschirm aus
[IntelliJ IDEA] So fügen Sie beim Speichern einer Java-Datei automatisch final hinzu
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
So erstellen Sie eine App mit einem Plug-In-Mechanismus [C # und Java]
Scraping und Schreiben bestimmter Elemente in eine Datei
So geben Sie Excel und PDF mit Excella aus
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
Grundlagen der Java-Entwicklung ~ So schreiben Sie ein Programm (Ablauf und bedingte Verzweigung) ~
So sichern Sie von der Datenbank (DB) in die Seeds-Datei
So konvertieren Sie einen Soliditätsvertrag in eine Java-Vertragsklasse
Die Geschichte des Versuchs, JAVA File zu bedienen
Wie man Java SE8 Gold bekommt und studiert
So greifen Sie auf Java Private-Methoden und -Felder zu
[Java] Verwendung der Kalenderklasse und der Datumsklasse
Erstellen Sie ein Java-Servlet und eine JSP-WAR-Datei für die Bereitstellung auf Apache Tomcat 9 mit Gradle
<java> Zip-Datei lesen und direkt in String konvertieren
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
[Java] Arten von Kommentaren und wie man sie schreibt
Wie kann ich IBM Mainframe-Dateien in Java eingeben / ausgeben?
java: Wie schreibe ich eine generische Typliste? [Hinweis]
[Java] Wie man aus Janken rauskommt (entspricht Paiza Rang A)
[Java] So extrahieren Sie den Dateinamen aus dem Pfad
Lesen von Java Memory Management und GC Viewer
So erstellen Sie einen Daten-URI (base64) in Java
[Java] So erhalten Sie eine Anfrage per HTTP-Kommunikation
[Java] Wie man Aufgaben regelmäßig ausführt
Herunterladen von Dateien (Servlet, HTML, Apache, Tomcat)
[Java] So schneiden Sie eine Zeichenfolge zeichenweise aus
[Java] So löschen Sie ein bestimmtes Zeichen aus einer Zeichenfolge
[Java] So unterbrechen Sie eine Zeile mit StringBuilder
So schreiben Sie Kommentare in die Schemadefinitionsdatei in GraphQL Java und spiegeln sie in GraphiQL und GraphQL Playground wider
So fordern Sie mit jMeter eine CSV-Datei als JSON an
So lesen Sie Ihre eigene YAML-Datei (*****. Yml) in Java
Generieren und Ausführen der Jar-Datei der zum Paket gehörenden Java-Datei
Weisen Sie Variablen Java8-Lambda-Ausdrücke zu und verwenden Sie sie erneut
[Ruby] So teilen Sie jede GraphQL-Abfrage in Dateien auf
Bedingte Java-Verzweigung: Erstellen und Studieren von switch-Anweisungen
So erstellen Sie ein leichtes Container-Image für Java-Apps