是什么导致了我在top
看到的这些sleeping
过程? 如果我要调用PHP的sleep()
函数,是否会增加我在top
看到的sleeping
计数? sleeping
有没有什么缺点?
一个进程在被阻塞时正在休眠,正在等待某个东西。 例如,它可能已经调用了read()
并正在等待数据从网络流到达。
sleep()
确实是让你的进程睡一会儿的一种方法。 然而,睡眠是除了严重计算的过程之外的正常状态 – 睡眠本质上是一个过程在没有做其他事情时所做的事情。 大部分进程处于正常状态是正常情况 – 如果情况并非如此,则趋向于表明您需要更多的CPU功率。
睡眠过程就像暂停过程。 一个进程睡觉时:
任何过程的状态可以是:
状态含义
R Runnable
T停了下来
P正在等待Pagein
D等待I / O
S睡觉<20秒
我空闲 – 睡眠> 20秒
Z僵尸或已经失效
它们是现在没有在CPU上运行的进程。 这不一定是坏事。
如果您的进程处于睡眠状态的数量很大(例如,服务器系统上有10,000个),则用于跟踪这些进程的内存量等可能会使系统对非睡眠进程效率较低。
否则,没关系。
大部分普通的服务器系统都有100到1000的时间。 这不是什么大不了的事
仅仅因为他们现在没有做任何事情,并不意味着他们不会很快。 将它们保存在内存中,准备就绪,在需要时减少延迟。
在这里进一步详细说明, S
状态表示进程正在等待定时器或慢速设备,而D
状态表示正在等待快速设备。
什么构成一个快速的设备还是一个慢速的设备并不是非常明确的定义,但是一般来说,所有的串行,网络和终端设备都是慢速设备,而磁盘是快速设备。