CPU > 80% - 我该如何调试?

CPU > 80% - 我该如何调试?

我正在 Ubuntu 14.04 digital ocean vps 上运行 laravel 应用程序,并使用 New Relic 来监控服务器。

我收到一封电子邮件警报,指出我的 CPU 使用率超过 80%。我登录 New Relic,现在显示我的 CPU 使用率在 18 小时内为 99%。但是,当我登录到 shell 并运行“top”时,进程的 CPU 使用率之和甚至不到 10%。

可能出什么问题了?我可以运行哪些其他命令来检查实际使用情况以及是什么使用了它这么多? (也许应用程序上存在无限循环?)

这是我的 htop 结果:

在此输入图像描述

这是shift+K之后的htop

在此输入图像描述

任何链接或帮助将不胜感激。

答案1

我不确定发生了什么,但我的猜测是,单个进程的 %CPU 列并没有告诉您您认为它告诉您的内容。从顶部的联机帮助页:

  k: %CPU  --  CPU usage
  The task’s share of the elapsed CPU time since the last screen update,
  expressed as a percentage of total CPU time. 

假设您每 4 秒刷新一次。这 2 秒内消耗的总 CPU 时间为 6%在这4秒内。但假设其中某一秒,它突然使用了 24% 的 CPU 时间。我并不是说这种情况正在发生,但它可能会发生。

我对top这里很满意。我可以看到 CPU 使用率按 CPU 细分,并进一步按user, sys, nice, idle, wait(在 I/O 上)细分,为硬件和软件中断提供服务(嗨,si)。你也许htop也可以把这个放进去。只要您有 1 个 CPU 至少有 20% 空闲,就没有什么可真正担心的,除非您的风扇困扰您。但如果您担心,可能发生的情况是 %wait 和 %hi/%si 非常高,在这种情况下,没有单个进程的 CPU 使用率很高,而是内核由于某种原因非常繁忙。

答案2

我遇到了类似的问题,我确实在后台运行了 TOP 命令并将其重定向到 txt 文件

顶部 > 顶部.txt &

谢谢 可以看看哪个进程浪费了你的CPU

答案3

有几种选择。我的偏好是该程序htop通常不会默认安装,但几乎可用于所有发行版。它为您提供相同的信息,top但具有更丰富的功能集。它非常适合以交互方式查找问题流程,但不适合编写脚本。如果您想将某些内容合并到监控脚本中,那么该命令ps -eo pid,pcpu,comm将是您的朋友。它以相当容易解析的格式打印所有当前进程及其 PID 和 CPU 使用情况。

答案4

可能出什么问题了?

首先,你使用的是 Laravel,它需要大量内存,而你只有不到一半的内存。您在不受支持的操作系统上运行它 - 这很糟糕。您还没有告诉我们该堆栈的其余部分(Web 服务器、PHP SAPI、PHP 版本)。

相关内容