bug id:有一台server(solaris 5.8),使用top测试,发现IDEL的CPU每次都是0%,但是查看各个进程使用的CPU时间百分比,没有一个进程的使用率高!
这是怎么回事呢?百思而不解,后来使用vmstat 2查看(一般的,第一行输出都是无用的,错误的),发现us的百分比是30%,而sy的百分比是60%,这就说明cpu时间都是在系统空间耗去的。(我们还有另外两台吃CPU很厉害的机子,但是都是很正常的吃的;在那两台机子上面,us的百分比是60%,而sy的百分比是30%)。
再使用命令prstat -cvm 查看,发现原来是这样的原因:几乎每时每刻系统都在运行ls date ftp这样的命令,然后
这些命令在系统空间就占去了几乎60%的CPU时间。而这些程序都是由另外的程序调用的,闪一下就执行完了,所以这些命令的PID几乎每时每刻都在变,所以catch不到它们,而且还都是运行在系统空间。
事情原来是这样的,有人写了个shell(用户的要求了),监控一个目录下是否存在文件,存在就会把它ftp到另外一个server上。这个shell是个循环的语句,每时每刻都在察看,所以就ls, date,ftp。造成系统空间的CPU居高不下!!
把那个shell程序停掉,CPU的Idel就变成99%了;而一开启这个程序呢?CPU使用率一下子就到100%了。
该如何解决这个问题呢?思索了好长时间都没有想到办法。
我们的leader告诉我,在循环语句中加入sleep 2或sleep 3试一下。果然,CPU的Idel变成90%了,呵呵,从来不知道sleep 2的威力如此之大!!!姜还是老的辣,我们leader果然厉害啦!
(本过程不能在Solaris 2.6中重现,因为prstat命令不支持拉)
文以记之,以飨来者!
这是怎么回事呢?百思而不解,后来使用vmstat 2查看(一般的,第一行输出都是无用的,错误的),发现us的百分比是30%,而sy的百分比是60%,这就说明cpu时间都是在系统空间耗去的。(我们还有另外两台吃CPU很厉害的机子,但是都是很正常的吃的;在那两台机子上面,us的百分比是60%,而sy的百分比是30%)。
再使用命令prstat -cvm 查看,发现原来是这样的原因:几乎每时每刻系统都在运行ls date ftp这样的命令,然后
这些命令在系统空间就占去了几乎60%的CPU时间。而这些程序都是由另外的程序调用的,闪一下就执行完了,所以这些命令的PID几乎每时每刻都在变,所以catch不到它们,而且还都是运行在系统空间。
事情原来是这样的,有人写了个shell(用户的要求了),监控一个目录下是否存在文件,存在就会把它ftp到另外一个server上。这个shell是个循环的语句,每时每刻都在察看,所以就ls, date,ftp。造成系统空间的CPU居高不下!!
把那个shell程序停掉,CPU的Idel就变成99%了;而一开启这个程序呢?CPU使用率一下子就到100%了。
该如何解决这个问题呢?思索了好长时间都没有想到办法。
我们的leader告诉我,在循环语句中加入sleep 2或sleep 3试一下。果然,CPU的Idel变成90%了,呵呵,从来不知道sleep 2的威力如此之大!!!姜还是老的辣,我们leader果然厉害啦!
(本过程不能在Solaris 2.6中重现,因为prstat命令不支持拉)
文以记之,以飨来者!