私の Linux サーバーでは、tomcat を root として実行しており、実行するとps aux
次の出力が表示されます。
root 25667 0.1 29.2 4574004 306980 ? Sl Apr27 33:57 /usr/local/java/bin/java -Djava.util.logging.config.file...
親プロセスしかありませんが、実行するとhtop
他のすべての子プロセス (スレッドでしょうか?) が表示されます。以下に数行のサンプル出力を示します。
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
そこで、1 つのコマンドで子プロセスのリストを取得したいと思います。構成ファイルで maxThreads を 200 に設定し、子スレッドを数えて現在のスレッド数を確認したいと思います。
答え1
簡単に実行できます:ps -eLf | grep java
調整する必要があるかもしれません (探しているものを取得するために grep を改良できます)。
答え2
以下を起動できます:
ps -o nlwp PID
(PIDはプロセスのPIDになります)
nlwp = 軽量プロセスの数
答え3
JDK がインストールされている場合、これを (およびさまざまなヒープ サイズ) リアルタイムで監視する非常に便利な方法の 1 つはjconsole
、GUI プログラムである を使用することです ( がある場合は、これもインストールされている必要があります)。やなどjavac
のものもあります。jconsole を活用するには、JMX を有効にする必要がある場合があります (リモート接続の場合も有効にできます)。これらのツールは、検査する JVM を実行しているユーザーと同じユーザーとして実行する必要があります。jstat
jinfo
top
またはを使用している場合はhtop
、H
(大文字) と入力してスレッドの表示を切り替えることができます。さまざまな上位のキーストロークを確認する価値があります。