Я подключился по ssh к серверу в моем офисе, на котором запущен Lucid Lynx 10.04. Я не знаю, почему у него так много экземпляров java.
Спасибо
Это консольная панель $ top
Tasks: 134 total, 2 running, 132 sleeping, 0 stopped, 0 zombie
Cpu(s): 98.2%us, 1.8%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1926032k total, 1895432k used, 30600k free, 19500k buffers
Swap: 5644280k total, 192576k used, 5451704k free, 268796k cached
PID USER NI VIRT RES SHR S %CPU %MEM TIME+ PPID GROUP COMMAND
27132 padmin 0 1149m 405m 10m S 58 21.6 429:33.50 1 padmin java
7169 padmin 0 1134m 380m 10m S 57 20.2 37:02.32 1 padmin java
1893 padmin 0 1142m 381m 10m S 51 20.3 170:03.34 1 padmin java
3515 padmin 0 1105m 241m 916 S 20 12.8 4932:54 1 padmin java
16946 root 0 41784 7768 1084 S 1 0.4 0:00.13 6935 root munin-node
17301 nobody 0 17368 2744 1696 R 1 0.1 0:00.03 16946 munin memory
16930 root 0 41784 7768 1084 S 1 0.4 0:00.13 6935 root munin-node
54 root 0 0 0 0 S 0 0.0 22:38.89 2 root kondemand/0
926 mysql 0 237m 2484 664 S 0 0.1 14:30.06 1 mysql mysqld
1692 root 0 1017m 51m 27m S 0 2.7 60:31.46 1 root mongod
3284 padmin 0 76400 1032 232 S 0 0.1 0:30.69 1 padmin memcached
16012 padmin 0 19224 1424 1064 R 0 0.1 0:00.82 12115 padmin top
1 root 0 23904 1316 644 S 0 0.1 0:00.74 0 root init
2 root 0 0 0 0 S 0 0.0 0:00.01 0 root kthreadd
3 root 0 0 0 0 S 0 0.0 0:00.03 2 root migration/0
4 root 0 0 0 0 S 0 0.0 0:00.27 2 root ksoftirqd/0
5 root 0 0 0 0 S 0 0.0 0:00.21 2 root watchdog/0
6 root 0 0 0 0 S 0 0.0 0:00.03 2 root migration/1
7 root 0 0 0 0 S 0 0.0 0:00.95 2 root ksoftirqd/1
8 root 0 0 0 0 S 0 0.0 0:00.15 2 root watchdog/1
9 root 0 0 0 0 S 0 0.0 1:09.30 2 root events/0
Как видите, все экземпляры java имеют одинаковый идентификатор ppid. Это легкий случай. Во многих бешеных случаях может быть до 7-10 экземпляров java. Дайте мне знать, если вам нужны другие выходы.
Кстати, каждый раз, когда я вхожу на сервер, я получаю
*** System restart required ***
Является ли причиной так много экземпляров java?
РЕДАКТИРОВАТЬ: $ pstree
init─┬─apache2───5*[apache2]
├─atd
├─avahi-daemon───avahi-daemon
├─console-kit-dae───63*[{console-kit-da}]
├─cron
├─cupsd
├─dbus-daemon
├─dnsmasq
├─dovecot─┬─2*[dovecot-auth]
│ ├─3*[imap-login]
│ └─3*[pop3-login]
├─6*[getty]
├─java───56*[{java}]
├─java───67*[{java}]
├─libvirtd───6*[{libvirtd}]
├─master─┬─pickup
│ └─qmgr
├─2*[memcached───5*[{memcached}]]
├─mongod───76*[{mongod}]
├─munin-node
├─mysqld───9*[{mysqld}]
├─named───4*[{named}]
├─nmbd
├─postgres───4*[postgres]
├─rsyslogd───3*[{rsyslogd}]
├─smbd───smbd
├─sshd───sshd───sshd───bash───pstree
├─udevd───2*[udevd]
├─upstart-udev-br
├─vsftpd
└─winbindd───3*[winbindd]
Я не думаю, что они представляют потоки Java, поскольку каждый из них имеет свой PID.
У вас может быть пользователь padmin (или пользователь root, или тот, кто может использовать sudo для этой цели и т. Д.), Чтобы проверить командные строки этих соответствующих процессов Java, используя любой из этих методов (заменив pid соответствующим номером сверху выход - 27132, 7169 и др.):
ps -ef | grep pid
или
cat / proc / pid / cmdline
Таким образом, по крайней мере, вы можете начать выяснять, откуда каждый из них был вызван и что он делает.
1) Трудно сказать, не видя вашего списка процессов, но, скорее всего, вы просто наблюдаете за многими Java потоки, не так много экземпляров / процессов. Java по своей природе очень интенсивно использует потоки, и многие из них - это нормально.
2) Вы обновили свой сервер, и одним из обновлений было обновление ядра. Это требует перезагрузки для использования нового ядра, поэтому Ubuntu просит вас перезагрузить сервер.
Требуемый перезапуск системы, скорее всего, является результатом применения исправления ядра. Для использования нового ядра требуется перезапуск. Это не связано с проблемой java-процесса, но, скорее всего, временно решит проблему.
Поскольку PPID (родительский PID) для процесса Java равен 1, они не являются потоками. Возможно, у вас есть команда в вашем профиле для запуска этого приложения, хотя, поскольку оно запускает пользовательский padmin, это маловероятно. Поиск linux padmin java дает ряд различных возможных приложений, которые могут быть запущены. Команду lsof можно использовать, чтобы попытаться выяснить, откуда они были начаты. Затем вы можете попробовать настроить, какое приложение запущено.
Тот факт, что это процесс Java, мало что говорит вам о реальном приложении; вы хотите увидеть всю командную строку. ps -fp $(pgrep -d, -x java)
должен предоставить вам полную командную строку каждого текущего java-процесса (если они являются недолговечными процессами, тогда поиск процесса сначала может потерпеть неудачу, поскольку он может быть завершен к тому времени, когда вы попытаетесь найти его командную строку, поэтому выполнение этого в одной строке является хорошая идея)
«Ps aux | grep java »даст гораздо более точные данные о проблеме.
Но с указанными данными есть одна интересная точка: группа этих программ Java: padmin. Этот пользователь ваш пользователь, верно? Поскольку вы идете «наверху» с этим пользователем.
Вы также используете memcached со своим пользователем. Поэтому я подозреваю, что у вас есть полный экземпляр сервера, работающий с этим пользователем. Может Tomcat? По крайней мере, он использует Java.
В это ВРЕМЯ эти процессы выполняются долгое время, так что я предполагаю, что они являются своего рода внутренними потоками программы.