RHEL6.1 top命令下cpu %wa 为90%的奇怪现象
服务器安装的是RAID0(两块硬盘),每天中午和晚上的时候都会出现系统响应很慢的情况。一个命令要执行大约1分钟左右,整个服务器上面运行的程序都不能运行了,用top命令按1观察CPU的使用情况,结果如下:
Tasks:146 total, 4 running, 141 sleeping, 0 stopped, 1 zombie
Cpu0: 3.5%us, 3.0%sy, 0.0%ni, 22.1%id, 70.4%wa, 0.0%hi, 1.0%si, 0.0%st
Cpu1: 0.6%us, 0.8%sy, 0.0%ni, 6.5%id, 91.8%wa, 0.0%hi, 0.2%si, 0.0%st
Cpu2: 0.8%us, 0.8%sy, 0.0%ni, 12.7%id, 85.4%wa, 0.0%hi, 0.2%si, 0.0%st
Cpu3: 0.6%us, 0.6%sy, 0.0%ni, 2.3%id, 96.5%wa, 0.0%hi, 1.0%si, 0.0%st
我的程序是运行在Cpu1上面,平时的id%都是在85%以上的。不知道这是什么原因造成的,每次出现这种情况的时候,整个服务器上运行的程序基本上都不能提供服务了。
还有一个问题,我的程序里面有70多个线程在同时运行,但是用top命令观看到的我的程序只使用了cpu1,而没有使用其他cpu,这个正常吗?是不是没有充分利用多核的优势啊?
------解决方案--------------------wa值高一般是高负载的磁盘IO造成的,你看服务器的硬盘灯是不是常亮
从你的top表上并没有只用cpu1啊
------解决方案--------------------曾明有僵尸进程在哪里
------解决方案--------------------LZ怀疑的,应用程序总占用cpu1,可以通过cat /proc/interrupts ,来进行确认,不过一般情况下,系统会平均负载每个cpu核心的中断数,所以LZ其实是不需要担心的
另外,从LZ提供的信息来看,cpu并不高,不知道此时的Load值如何,如果cpu不高,Load很高,基本可以判断是IO出现问题,检查此时硬盘和内存的IO情况吧。
------解决方案--------------------1.检查crontab,看看每天的异常时间段,是否有什么特殊的任务
2.或者检查服务器上的access_log,检查异常的时间段,有哪些特定的访问
3.每隔几秒输出iostat信息到文件中,然后拉出来对比下时间和磁盘IO的特点。或者搞个cacti或者到“监控宝”上画出一个IO的曲线图看看特点