На моем сервере 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
Итак, я хочу получить список дочерних процессов с помощью одной команды. Я установил maxThreads на 200 в файле конфигурации и хочу проверить текущее количество потоков, подсчитав дочерние потоки.
решение1
Это достаточно просто сделать:ps -eLf | grep java
Возможно, придется что-то подкорректировать (grep можно усовершенствовать, чтобы получить то, что вы ищете).
решение2
Вы можете запустить:
ps -o nlwp PID
(PID будет идентификатором вашего процесса)
nlwp = количество облегченных процессов
решение3
Если у вас установлен JDK, очень полезным способом мониторинга этого (и различных размеров куч) в реальном времени является jconsole
, которая является программой с графическим интерфейсом (если у вас есть javac
, у вас также должна быть эта). Есть также такие вещи, как jstat
и jinfo
и другие. Чтобы воспользоваться преимуществами jconsole, вам может потребоваться включить JMX (это также можно сделать для удаленных подключений). Вам нужно будет запустить эти инструменты от имени того же пользователя, который запускает JVM, которую вы хотите проверить.
Если вы используете top
или htop
, то вы можете ввести H
(заглавную) для переключения отображения потоков. Стоит взглянуть на различные верхние нажатия клавиш.