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 版本)。

相關內容