求高手,linux系统几乎所有进程处于sleep状态是否正常
背景:前台显示操作结果一直处于等待状态,后台无错误信息,TOP后进程状态如下:CPU空闲,内存充足,IO无等待8819grms45342287M60Msleep0:010...
背景:前台显示操作结果一直处于等待状态,后台无错误信息,TOP后进程状态如下:CPU空闲,内存充足,IO无等待
8819 grms 45 34 2 287M 60M sleep 0:01 0.86% java
29733 grms 80 59 0 519M 343M sleep 3:30 0.13% java
29483 ond 70 59 0 3577M 2782M sleep 3:04 0.11% java
29721 grms 282 59 0 480M 314M sleep 1:31 0.04% java
8701 grms 1 59 0 3672K 2224K cpu/2 0:01 0.03% top
29692 grms 80 60 0 293M 115M sleep 2:54 0.02% java
29703 grms 54 59 0 465M 338M sleep 7:03 0.02% java
29712 grms 53 59 0 497M 318M sleep 6:47 0.01% java
29697 grms 53 59 0 521M 322M sleep 7:14 0.01% java
8787 grms 1 34 2 2072K 1560K sleep 0:00 0.01% startRequestLoa
29408 ond 79 59 0 3132M 2887M sleep 58:04 0.01% java
8786 grms 1 44 2 1656K 1256K sleep 0:00 0.01% sh
8811 grms 1 34 2 1720K 1320K sleep 0:00 0.00% runTask.sh
25351 root 35 59 0 15M 8688K sleep 67:45 0.00% nscd 展开
8819 grms 45 34 2 287M 60M sleep 0:01 0.86% java
29733 grms 80 59 0 519M 343M sleep 3:30 0.13% java
29483 ond 70 59 0 3577M 2782M sleep 3:04 0.11% java
29721 grms 282 59 0 480M 314M sleep 1:31 0.04% java
8701 grms 1 59 0 3672K 2224K cpu/2 0:01 0.03% top
29692 grms 80 60 0 293M 115M sleep 2:54 0.02% java
29703 grms 54 59 0 465M 338M sleep 7:03 0.02% java
29712 grms 53 59 0 497M 318M sleep 6:47 0.01% java
29697 grms 53 59 0 521M 322M sleep 7:14 0.01% java
8787 grms 1 34 2 2072K 1560K sleep 0:00 0.01% startRequestLoa
29408 ond 79 59 0 3132M 2887M sleep 58:04 0.01% java
8786 grms 1 44 2 1656K 1256K sleep 0:00 0.01% sh
8811 grms 1 34 2 1720K 1320K sleep 0:00 0.00% runTask.sh
25351 root 35 59 0 15M 8688K sleep 67:45 0.00% nscd 展开
2个回答
展开全部
你的sleep进程基本上都是java相关的。可能是由于某个进程长期得不到响应,比如nfs造成的IO中断,应用一直在等待响应,等的都睡着了。。所以也看不到报错,呵呵。具体的也看不出到底是哪个进程引起的。建议就是重启相关的java应用。或者重启机器。
进程为什么会被置于uninterruptible sleep状态呢?处于uninterruptible sleep状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被 ps看到了,同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了,我以前遇到的问题就是由 down掉的NFS服务器引起的。
正是因为得不到IO的相应,进程才进入了uninterruptible sleep状态,所以要想使进程从uninterruptible sleep状态恢复,就得使进程等待的IO恢复,比如如果是因为从远程挂载的NFS卷不可访问导致进程进入uninterruptible sleep状态的,那么可以通过恢复该NFS卷的连接来使进程的IO请求得到满足,除此之外,要想干掉处在D状态进程就只能重启整个Linux系统了。
进程为什么会被置于uninterruptible sleep状态呢?处于uninterruptible sleep状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被 ps看到了,同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了,我以前遇到的问题就是由 down掉的NFS服务器引起的。
正是因为得不到IO的相应,进程才进入了uninterruptible sleep状态,所以要想使进程从uninterruptible sleep状态恢复,就得使进程等待的IO恢复,比如如果是因为从远程挂载的NFS卷不可访问导致进程进入uninterruptible sleep状态的,那么可以通过恢复该NFS卷的连接来使进程的IO请求得到满足,除此之外,要想干掉处在D状态进程就只能重启整个Linux系统了。
追问
你说的很对,非常感谢你的回答。忘了告诉你,这是SUNOS.
再问一下为什么几乎所有进程都在sleep呢? 多核系统会这样吗? 如果他们确实很闲,有事做的时候,还是得勤快点吧,怎么会出现长期不响应呢?
如果sleep是在等待IO,那为什么IOWAIT% 为0?
还有不是被PS看到的,是TOP监控了很长一段时间,发现一直是这样。
继续求解答。
展开全部
以本人的拙见,楼上的知识很丰富,但忘了计算机的本质。
现代计算机是多任务处理架构,就是说,可以同时运行多个进程。但是,这只是对用户来说。其实,在同一时间,只有一个进程可以占用CPU,其他进程都是处于sleep,CPU会根据一定策略去选择运行某个进程而挂起其他进程。但由于CPU主频太快,用户是无法察觉到的,就好比你一边上网,一边听歌,觉得CPU在同时跑两个进程,其实只有其中一个,只不过CPU在不同的进程之间切换处理。
你仔细看,top进程不在sleep,其他的都在,对吧 。在windows的资源管理器中,你是看不到进程状态的。至于多核的CPU,我也不敢乱说,但进程绝大多数都应该在Sleep状态。你看你top占用的是cpu/2,可以判断你的CPU是多核的
我在自己的Linux上看了一下,只有一个进程不在Sleep
现代计算机是多任务处理架构,就是说,可以同时运行多个进程。但是,这只是对用户来说。其实,在同一时间,只有一个进程可以占用CPU,其他进程都是处于sleep,CPU会根据一定策略去选择运行某个进程而挂起其他进程。但由于CPU主频太快,用户是无法察觉到的,就好比你一边上网,一边听歌,觉得CPU在同时跑两个进程,其实只有其中一个,只不过CPU在不同的进程之间切换处理。
你仔细看,top进程不在sleep,其他的都在,对吧 。在windows的资源管理器中,你是看不到进程状态的。至于多核的CPU,我也不敢乱说,但进程绝大多数都应该在Sleep状态。你看你top占用的是cpu/2,可以判断你的CPU是多核的
我在自己的Linux上看了一下,只有一个进程不在Sleep
追问
你们两都说得很对,其实我不解的就在这里,这是一台多核的机器,有4个物理CPU,虚拟出来32个,按道理来说,这台机器平常都会很忙,应该每个CPU都在处理在对,为什么一般都只看到1-3个进程是ON CPU的,当然还包括了TOP进程。
忘了说一下,这台机器是SUNOS。
另一台机器,AIX系统,几乎所有进程都处于ACTIVE,都有很多JAVA进程,难道跟系统有关? 所以我很迷惑。
追答
这我就真不清楚了。我刚才又top了一下。我的机器是双核的,可以偶尔看到同时两个进程在Run状态。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询