在我的Linux服务器上,我以root身份运行tomcat,当我运行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我可以看到所有其他subprocess(哪些是线程?)。 下面给出几行的示例输出。
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
所以我想用一个命令来获取subprocess列表。 我在configuration文件中将maxThreads设置为200,并希望通过对子线程进行计数来检查当前线程数。
容易做到: ps -eLf | grep java ps -eLf | grep java
可能需要调整(grep可以被精炼以获得你要找的东西)。
您可以启动:
ps -o nlwp PID
(PID将是你的进程的PID)
nlwp =轻量级进程的数量
如果您安装了JDK,那么实时监控这个(以及各种堆大小)的非常有用的方法是jconsole ,它是一个GUI程序(如果您有javac ,您也应该有这个)。 还有jstat和jinfo等等。 要受益于jconsole,您可能需要启用JMX(这也可以用于远程连接)。 您需要以运行您要检查的JVM的相同用户身份运行这些工具。
如果您使用top或htop ,则可以键入H (大写)切换线程的显示。 它的价值在于各种顶级的按键。