Php 在*nix中,是什么导致;“睡眠”;最高指挥官?

Php 在*nix中,是什么导致;“睡眠”;最高指挥官?,php,linux,unix,process,top-command,Php,Linux,Unix,Process,Top Command,是什么原因导致我在top中看到的进程睡眠?如果我调用PHP的sleep()函数,这会增加我在top中看到的sleep计数吗?在睡眠中有一个高的数字有什么缺点吗?当进程被阻塞时,它正在睡眠,等待一些东西。例如,它可能调用了read(),正在等待来自网络流的数据 sleep()。然而,睡眠是除严重受计算限制的进程之外的所有进程的正常状态——睡眠本质上是一个进程在不做任何其他事情时所做的事情。大多数进程处于休眠状态是正常的,如果不是这种情况,则表明您需要更多的CPU马力。它们是目前不在CPU上运行的进

是什么原因导致我在
top
中看到的
进程睡眠?如果我调用PHP的
sleep()
函数,这会增加我在
top
中看到的
sleep
计数吗?在
睡眠中有一个高的数字有什么缺点吗?

当进程被阻塞时,它正在睡眠,等待一些东西。例如,它可能调用了
read()
,正在等待来自网络流的数据


sleep()。然而,睡眠是除严重受计算限制的进程之外的所有进程的正常状态——睡眠本质上是一个进程在不做任何其他事情时所做的事情。大多数进程处于休眠状态是正常的,如果不是这种情况,则表明您需要更多的CPU马力。

它们是目前不在CPU上运行的进程。这不一定是坏事

如果有大量(例如,服务器系统上有10000个)进程处于休眠状态,那么用于跟踪这些进程的内存量等可能会降低系统对非休眠进程的效率

否则就好了

大多数正常的服务器系统大部分时间都有100到1000次;这没什么大不了的


仅仅因为他们现在没有做任何事情并不意味着他们不会,很快。将它们保存在内存中,准备就绪,可以在需要它们时减少延迟。

睡眠过程就像挂起的过程。 进程在以下情况下休眠:

  • 它正在执行I/O操作(I/O阻塞)
  • 当您通过sleep()命令它睡眠时(
  • 任何流程的状态都可以是:

    • 就绪:当它准备好执行并且在队列中以特定优先级等待处理器调用时
    • 休眠:当它正在运行并且被I/O操作阻塞时,或者在执行sleep()时
    • 运行:当处理器执行一个进程时,它就开始运行
    身份意义

    • R可运行

    • 他没有停下来

    • p正在等待寻呼

    • D等待I/O

    • 睡眠时间<20秒

    • 我空闲-睡眠>20秒

    • Z僵尸还是不存在


    更详细地说,
    S
    状态表示进程正在等待计时器或慢速设备,而
    D
    状态表示进程正在等待快速设备


    快速设备与慢速设备的区别并没有很好的定义,但一般来说,所有串行、网络和终端设备都是慢速设备,而磁盘都是快速设备。

    进程处于休眠状态,因为它们目前无事可做。