Auf meinem Linux-Server führe ich Tomcat als Root aus. Beim Ausführen ps aux
wird die folgende Ausgabe ausgegeben.
root 25667 0.1 29.2 4574004 306980 ? Sl Apr27 33:57 /usr/local/java/bin/java -Djava.util.logging.config.file...
Es gibt nur einen übergeordneten Prozess, aber wenn ich ihn ausführe, htop
kann ich alle anderen untergeordneten Prozesse sehen (welche sind Threads?). Beispielausgabe für einige Zeilen unten.
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
25668 root 15 0 4466M 299M 14208 S 0.0 29.3 0:01.23 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25669 root 18 0 4466M 299M 14208 S 0.0 29.3 0:54.84 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25670 root 15 0 4466M 299M 14208 S 0.0 29.3 0:00.25 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25671 root 15 0 4466M 299M 14208 S 0.0 29.3 0:00.54 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25672 root 18 0 4466M 299M 14208 S 0.0 29.3 0:00.00 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25673 root 15 0 4466M 299M 14208 S 0.0 29.3 0:17.96 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25674 root 15 0 4466M 299M 14208 S 0.0 29.3 0:20.01 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
25675 root 19 0 4466M 299M 14208 S 0.0 29.3 0:00.00 /usr/local/java/bin/java -Djava.util.logging.config.file=/usr/local/t
Ich möchte also mit einem einzigen Befehl eine Liste der untergeordneten Prozesse erhalten. Ich habe maxThreads in der Konfigurationsdatei auf 200 gesetzt und möchte die aktuelle Thread-Anzahl überprüfen, indem ich die untergeordneten Threads zähle.
Antwort1
Das geht ganz einfach:ps -eLf | grep java
Möglicherweise müssen Sie es anpassen (grep kann verfeinert werden, um das Gesuchte zu erhalten).
Antwort2
Sie können starten:
ps -o nlwp PID
(PID ist die PID Ihres Prozesses)
nlwp = Anzahl der Lightweight-Prozesse
Antwort3
Wenn Sie ein JDK installiert haben, ist eine sehr nützliche Möglichkeit, dies (und die verschiedenen Heap-Größen) in Echtzeit zu überwachen jconsole
, , ein GUI-Programm (wenn Sie haben javac
, sollten Sie dies auch haben). Es gibt auch Dinge wie jstat
und jinfo
und andere. Um von jconsole zu profitieren, müssen Sie möglicherweise JMX aktivieren (dies kann auch für Remoteverbindungen erfolgen). Sie müssen diese Tools als derselbe Benutzer ausführen, der die JVM ausführt, die Sie überprüfen möchten.
top
Wenn Sie oder verwenden htop
, können Sie H
(Großbuchstabe) eingeben, um die Anzeige der Threads umzuschalten. Es lohnt sich, einen Blick auf die verschiedenen Tastenkombinationen zu werfen.