No meu servidor Linux eu executo o Tomcat como root e quando executo ps aux
ele dá a seguinte saída.
root 25667 0.1 29.2 4574004 306980 ? Sl Apr27 33:57 /usr/local/java/bin/java -Djava.util.logging.config.file...
Há apenas o processo pai, mas quando executo htop
posso ver todos os outros processos filhos (que são threads?). Exemplo de saída para algumas linhas fornecidas abaixo.
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
Então, quero obter a lista de processos filhos com um único comando. Defino maxThreads como 200 no arquivo de configuração e quero verificar a contagem de threads atual contando os threads filhos.
Responder1
Fácil de fazer:ps -eLf | grep java
Pode ser necessário ajustar (o grep pode ser refinado para obter o que você procura).
Responder2
Você pode lançar:
ps -o nlwp PID
(PID será o pid do seu processo)
nlwp = número de processos leves
Responder3
Se você tiver um JDK instalado, uma maneira muito útil de monitorar isso (e os vários tamanhos de heaps) em tempo real é o jconsole
JDK, que é um programa GUI (se você tiver javac
, também deverá ter este). Existem também coisas como jstat
e jinfo
e outras. Para se beneficiar do jconsole, pode ser necessário habilitar o JMX (isso também pode ser feito para conexões remotas). Você precisará executar essas ferramentas como o mesmo usuário que está executando a JVM que deseja inspecionar.
Se estiver usando top
ou htop
, você pode digitar H
(maiúsculo) para alternar a exibição dos tópicos. Vale a pena dar uma olhada nas várias teclas principais.