我在sleeping
中看到的这些top
进程的原因是什么?如果我要调用PHP的sleep()
函数,是否会增加sleeping
中我看到的top
计数? sleeping
中的数字是否有任何缺点?
答案 0 :(得分:19)
进程在被阻塞时正在休眠,等待某事。例如,它可能已调用read()
并正在等待数据从网络流到达。
sleep()
确实是让你的过程暂时休眠的一种方法。然而,睡眠是除了大量计算绑定过程之外的所有正常状态 - 睡眠本质上是一个过程在没有做任何事情时所做的事情。这是大多数进程正常睡眠的正常状态 - 如果不的情况下,它往往表明你需要更多的CPU马力。
答案 1 :(得分:9)
睡眠过程就像暂停过程。
进程在以下情况下休眠:
任何流程的状态可以是:
状态含义
R Runnable
T已停止
等待Pagein
D等待I / O
S Sleeping< 20秒
我闲着 - 睡觉> 20秒
Z Zombie或已解散
答案 2 :(得分:2)
它们是目前未在CPU 上运行的进程。这不一定是坏事。
如果您有大量的数据(例如,服务器系统上有10,000个)进程正在休眠,那么用于跟踪它们的内存量等可能会降低系统对非休眠进程的效率。
否则,没关系。
大多数普通服务器系统的大部分时间都在100到1000之间;这不是什么大问题。
仅仅因为他们现在没有做任何事情并不意味着他们不会很快。将它们保存在内存中,准备就绪,可在需要时减少延迟。
答案 3 :(得分:2)
为了进一步详细说明,S
状态表示进程正在等待定时器或慢速设备,而D
状态表示它正在等待快速设备。< / p>
快速设备与慢速设备的构成并不是很明确,但通常所有串行,网络和终端设备都是慢速设备,而磁盘则是快速设备。