我在我办公室的一台服务器上运行,运行的是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的所有java实例都有相同的ppid。 这是一个温和的例子。 在许多暴力事件中,可以有多达7到10个java实例。 让我知道是否有任何你需要的其他输出。
另外,每当我login到服务器,我得到一个
*** 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过程的事实并没有告诉你实际的应用程序太多, 你想看到整个命令行。 ps -fp $(pgrep -d, -x java)应该给你每个当前java进程的完整的命令行(如果它们是短命的进程,那么首先寻找进程可能会失败,因为它可能已经完成了,并find它的命令行,因此在一条线上做是一个好主意)
我不认为这些代表Java线程,因为他们每个人都有不同的PID。
您可以使用padmin用户(或root用户,或者为此目的可以使用sudo的用户等)使用这些方法中的任何一种方法来检查这些相应Java进程的命令行(将pidreplace为顶部的相应编号输出 – 27132,7169等):
ps -ef | grep pid
要么
cat / proc / pid / cmdline
这样,至less你可以开始找出他们每个人从哪里来的,以及它在做什么。
1)很难说没有看到你的进程列表,但很可能你只是观察了许多Java 线程 ,而不是很多实例/进程。 Java从本质上来说使用线程非常多,而且看到其中很多是正常的。
2)你已经更新了你的服务器,其中一个更新是内核升级。 这需要重新启动一个新的内核来使用,所以这就是为什么Ubuntu要求你重启你的服务器。
所需的系统重新启动可能是由于应用了内核补丁。 需要重新启动才能使用新的内核。 这与java进程问题无关,但可能会暂时解决问题。
由于Java进程的PPID(父PID)为1,因此它们不是线程。 可能你的configuration文件中有一个命令来启动这个应用程序,但是当它运行一个用户padmin时,这可能是不可能的。 searchlinux padmin java,给出了许多不同的可能的应用程序,可能正在运行。 lsof命令可以用来试图找出这些是从哪里开始的。 然后你可以尝试configuration什么应用程序正在运行。
“ps aux | grep java“输出会给出更好的关于这个问题的数据。
但是对于给定的数据,单个兴趣点是:那些Java程序组:padmin。 这个用户是你的用户,对吧? 由于您正在用该用户运行“顶部”。
您也正在与您的用户一起运行memcached。 所以我怀疑你有完整的服务器实例与该用户运行。 也许Tomcat? 它至less使用Java。
那个时候,那些进程已经运行很久了,所以我想他们是程序的后端线程。