linux – ps为%cpu和cputime返回不合理的高值
我们在我们的一台服务器上收到Nagios的警报,我们有一个失控的过程.登录并运行top并没有显示任何不好的事情,但是当我看到ps的输出时,我看到一些奇怪的东西:
oxygen@mail-1:~$ps -e -o %cpu,comm,cputime --sort %cpu | tail 0.2 amavisd 00:00:11 0.2 zmlogger 00:00:54 0.2 zmstat-allprocs 03:44:19 0.2 amavisd 00:00:07 0.2 amavisd 00:00:14 0.3 amavisd 00:00:08 0.3 top 00:00:05 0.5 amavisd 00:00:04 8.1 mysqld 3-23:07:17 7413 java 1184016091-02:47:13 %cpu和cputime看起来不合理.关于为什么会出现这种情况的任何想法? oxygen@mail-1:~$ps --version procps version 3.2.8 oxygen@mail-1:~$uname -a Linux mail-1 2.6.32-35-server #78-Ubuntu SMP Tue Oct 11 16:26:12 UTC 2011 x86_64 GNU/Linux 编辑:回复以下评论: 是的,很好猜测这是一个Zimbra服务器. 负载平均值相当高,此服务器受磁盘限制: top - 09:55:06 up 71 days,3:23,1 user,load average: 4.03,3.82,3.60 Tasks: 301 total,1 running,300 sleeping,0 stopped,0 zombie Cpu(s): 10.7%us,1.7%sy,0.0%ni,59.3%id,27.5%wa,0.0%hi,0.7%si,0.0%st Mem: 8192360k total,7867364k used,324996k free,171704k buffers Swap: 1953784k total,950944k used,1002840k free,1619948k cached pstree输出如下 oxygen@mail-1:~$pstree init─┬─amavisd───10*[amavisd] ├─atd ├─clamd───{clamd} ├─cron ├─6*[getty] ├─ha_logd───ha_logd ├─heartbeat───3*[heartbeat] ├─hpasmxld───8*[{hpasmxld}] ├─httpd─┬─4*[httpd] │ └─sh───rotatelogs ├─httpd─┬─6*[httpd] │ └─2*[sh───rotatelogs] ├─irqbalance ├─master─┬─anvil │ ├─3*[cleanup] │ ├─2*[lmtp] │ ├─pickup │ ├─2*[proxymap] │ ├─qmgr │ ├─showq │ ├─3*[smtp] │ ├─6*[smtpd] │ ├─tlsmgr │ └─2*[trivial-rewrite] ├─miniserv.pl ├─mysqld_safe───mysqld───37*[{mysqld}] ├─named───10*[{named}] ├─nginx───nginx ├─nrpe ├─ntpd ├─nullmailer-send ├─openhpid───3*[{openhpid}] ├─perl───zmlogger───zmlogger ├─rsyslogd───3*[{rsyslogd}] ├─saslauthd───4*[saslauthd] ├─screen───2*[bash] ├─slapd───9*[{slapd}] ├─snmpd ├─sshd───sshd───sshd───bash───pstree ├─swatch───perl ├─udevd───2*[udevd] ├─upstart-udev-br ├─zmconfigdctl─┬─java───19*[{java}] │ └─sleep ├─zmmailboxdmgr───java───166*[{java}] ├─zmstat-allprocs ├─zmstat-convertd ├─zmstat-cpu ├─zmstat-df ├─zmstat-fd───zmstat-fd ├─2*[zmstat-io───iostat] ├─zmstat-mtaqueue ├─zmstat-mysql ├─zmstat-proc └─zmstat-vm───vmstat 对于它的价值,它似乎更像是ps中的溢出错误而不是其他任何东西.我想不出java会在79天内耗费300万年的cputime的任何其他方式! 解决方法
我刚刚遇到了类似的问题,但几乎所有进程在重启后都会立即显示极大的CPU时间.
通过查看utime和stime列的/ proc / $PID / stat(我的内核上的第14列和第15列,检查proc(5)手册页以查看是否存在),可以确保ps中的溢出不是问题是不同的),例如: cut -d' ' -f14,15 /proc/$PID/stat 这些是时钟滴答数,如果它不是ps的问题,它们将是非常大的值. 我正在运行Scientific Linux 6.4(基于RHEL的发行版)并且看到了kernel-2.6.32-358.6.2.el6.x86_64的问题. 我通过安装更新??版本的内核(kernel-2.6.32-431.el6.x86_64)并重新启动来修复它. 我看到各种发行版都报告了类似的问题: > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1023214 因此,升级可能是解决问题的最佳方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |