首頁  >  文章  >  運維  >  cpu佔用率100%怎麼解決

cpu佔用率100%怎麼解決

藏色散人
藏色散人原創
2021-05-12 15:32:5516421瀏覽

cpu佔用率100%的解決方法:先找到影響CPU使用率過高的具體進程;然後排查影響CPU使用率過高的進程是否正常;最後分類進行處理即可。

cpu佔用率100%怎麼解決

本文操作環境:Windows Server 2008系統、Dell G3電腦。

cpu佔用率100%怎麼解決?

概述

本文主要介紹Windows實例中CPU使用率較高問題的檢查及解決方法。

詳細資料

阿里雲提醒您:

  • 如果您對實例或資料有修改、變更等風險操作,請務必注意實例的容災、容錯能力,確保資料安全。
  • 如果您對實例(包含但不限於ECS、RDS)等進行設定與資料修改,建議提前建立快照或開啟RDS日誌備份等功能。
  • 如果您在阿里雲平台授權或提交過登入帳號、密碼等安全訊息,建議您及時修改。

本文主要透過以下步驟來介紹。

定位問題。找到影響CPU使用率過高的具體進程。

分析處理。排查影響CPU使用率過高的進程是否正常,並分類進行處理。

  • 對於正常進程:您需要對程式進行最佳化或升級伺服器設定。
  • 對於異常進程:您可以手動對進程進行查殺,也可以使用第三方安全工具去查殺。

操作範例。介紹具體排查及解決方法的流程。

更多資訊。介紹排查工具的使用。

定位問題

微軟有多個工具可以定位CPU使用率過高的問題,例如工作管理員、資源監視器(Resource Monitor)、效能監視器(Performance Monitor)、 Process Explorer、Xperf(Windows server 2008 以後)、KernRate(Windows server 2003),抓取系統Full Memory Dump進行檢查。在流量大的情況下,您也可以使用Wireshark抓取一段時間的網路包,分析流量使用情況。

提示:Windows Server 2008以上系統,通常使用系統自帶的資源監視器監控CPU。

  • 在桌面底部點選 #開始 選單,選擇 執行

  • 開啟執行方塊後,在方塊中輸入perfmon -res,並按一下 確定

cpu佔用率100%怎麼解決

  • #在資源監視器頁面中,查看各行程是否有CPU使用率過高的現象。

cpu佔用率100%怎麼解決

  • #針對佔用資源較高的進程,查看對應的進程ID和進程的程序名。

  • 定位進程ID後,結合任務管理器判斷程式是否異常並定位程式的特定位置。
  1. 定位異常進程前,需要在工作管理員中依序點選 查看(V)選擇欄位(S)
    cpu佔用率100%怎麼解決
  2. 在彈出的方塊中選擇 PID(進程識別碼),按一下 確定
    cpu佔用率100%怎麼解決
  3. 在任務管理器的進程頁面中,將會增加PID這一項。點選 PID,透過排序,找到先前資源監視器檢視到的異常進程。右鍵點選進程名稱,選擇開啟檔案位置,查案進程是不是惡意程式。

分析處理

CPU使用率過高的分析處理

您需要判斷影響CPU使用率過高的進程,屬於正常進程還是異常進程,並分類進行處理。

正常使用率過高的分析處理

正常情況下,當客戶經常存取業務,或由於Windows自身服務(更新服務等)都可能會佔用較高網路流量和CPU 。針對正常進程導致的CPU使用率過高的情況,請依照以下順序逐一進行檢查。

提示:Windows Server 2008或Windows Server 2012執行個體建議記憶體配置在2G或2G以上。

  • 檢查後台是否有執行Windows Update的行為。

  • 建議在伺服器上安裝防毒軟體,進行防毒軟體。如有安裝防毒軟體,請檢查CPU飆升時,防毒軟體是否在背景執行掃描操作。如果可能,請升級防毒軟體到最新版本,或移除防毒軟體。

  • 檢查該ECS內應用程式是否有大量的磁碟存取、網路存取行為或高運算需求。透過嘗試增配執行個體規格的方式,使用更多核數或記憶體的規格來解決資源瓶頸問題,例如昇級配置。

  • 若自身伺服器配置較高,再去升級設定已經沒有太大意義。架構方面也並非是伺服器配置越高越好。此時,您需要嘗試進行應用程式分離,同時對相關程式進行最佳化。範例說明如下。

問題描述:當一個伺服器上面同時部署了MySQL、PHP、Web等多種應用,即使配置比較高,也很容易出現資源負載異常。
解決方法:嘗試應用分離,透過不同的伺服器去承載不同的應用程式。例如資料庫完全透過RDS來承載,減輕伺服器本身的資源消耗和伺服器內部大量的呼叫。而程式最佳化方面,您可以根據自身的配置狀況進行調整,例如調整連線數和快取配置,以及Web和資料庫呼叫時的各項參數等。

異常使用率過高的分析處理

對於CPU異常使用率過高的情況,可能是被惡意病毒、木馬入侵導致的。有時三方惡意程式可能會利用作業系統的svchost.exe或Tcpsvcs.exe來偽裝,造成高CPU的佔用。您需要手動對異常進程進行查殺。

提示:若您無法判斷進程是否為病毒或木馬,建議將進程名稱在網路上搜尋後確認。另外,建議您進行進程刪除操作前,提前建立快照完成備份。

  • 使用商業版防毒軟體,或使用微軟免費安全工具Microsoft Safety Scanner,在安全模式下進行掃描防毒,工具連結如下所示。
  • https://www.microsoft.com/security/scanner/zh-cn/default.aspx
  • 執行Windows Update來安裝最新的微軟安全補丁。

  • 使用MSconfig停用所有非微軟自帶服務驅動,檢查問題是否再次發生,具體操作請參考如何在Windows系統中執行乾淨啟動

  • 若伺服器或網站遭受DDoS攻擊或CC攻擊等,短期內產生大量的存取需求。您可以登入雲端安全中心,查看雲盾中的防護DDoS攻擊是否調整好門檻,並確認是否開啟CC防護。如果攻擊沒有觸發到閾值,雲盾沒有清洗,可以聯繫售後協助開起清洗。

操作範例

CPU使用率較高的可能原因如下。

  • 病毒木馬入侵。
  • 第三方防毒軟體運作。
  • 應用程式異常、驅動異常、高I/O使用率或高中斷處理的應用程式。

提示:在使用Windows Server 2012的1核心1GB規格的執行個體時,Windows Update服務會自動更新,執行個體的CPU使用率也會突然升高,這是正常現象。

解決方案

提示:本文大量引用Microsoft的官方文檔和工具鏈接,版權和所屬權歸Microsoft所有,並請充分考慮Microsoft Windows產品迭代或文件未及時更新可能帶來的問題。

  • CPU使用率較高時,檢查後台是否正在執行Windows Update的程序。

  • 檢查防毒軟體在背景是否正在執行掃描操作。可以升級防毒軟體到最新版本,或刪除防毒軟體。

  • 點選 執行,然後輸入 MSCONFIG,停用所有非Microsoft自帶服務驅動,然後檢查問題是否再次發生。相關參考文件如下。

  • How to perform a clean boot in Windows

  • #使用商業版防毒軟體或Microsoft安全掃描程式在安全模式下掃描殺毒。關於Microsoft安全掃描程序的參考文件如下。

  • Microsoft安全掃描程式

  • #執行Windows Update安裝最新Microsoft安全性修補程式。

  • 當ECS實例有大量的磁碟存取、網路存取和高運算需求時,CPU使用率較高是正常現象,可以透過升級實例規格的方式以應對資源不足問題。關於如何升級實例規格,請參考如下文件。

  • 升降配方式總結

更多解決方法可參考以下Microsoft文件。

更多資訊

以下是關於Windows實例檢查工具推薦的相關內容。

任務管理器

  • 直觀檢查應用程式列表,定位佔用CPU較高的應用程序,如下是任務管理器頁面。
    cpu佔用率100%怎麼解決
  • 在效能頁面檢查CPU使用率時,右鍵點選CPU使用率圖示,點選 將圖形改為 > 邏輯處理器。如下圖顯示了4個邏輯CPU的使用率。
    cpu佔用率100%怎麼解決
  • 當單一進程的CPU使用率飆升至接近100%時,而其它進程的CPU使用率變化不大,則可能是網路I/O處理造成的。

資源監視器

直覺檢查CPU使用率,也可以透過帳號和模組搜尋對應的進程。

cpu佔用率100%怎麼解決

Process Explorer

  • Process Explorer是一款Microsoft Sysinternals工具,透過配置正確的Symbols,檢查對應應用程式的執行緒呼叫的Call Stack,以定位可能的問題驅動。下載Process Explorer工具連結如下。
  • 如下是Process Explorer工具使用頁面。
    cpu佔用率100%怎麼解決

效能監視器

  • #效能監視器(Performance Monitor)是Microsoft專業收集各個元件效能計數器的工具。對於系統CPU資源消耗,有多個Counter來檢查。透過點選 開始 > 執行 > perfmon,開啟效能監視器。
  • Performance有以下三個核心參數。其中\Processor(_Total)\% Processor Time\Processor(*)\% User Time\Processor(*)\% Privileged Time總和。
    • \Processor(_Total)\% Processor Time
    • #\Processor(*)\% User Time
    • #\Processor(*)\% Privileged Time
  • #\Processor(*)\% Privileged Time是應用程式在內核中執行系統呼叫(例如驅動、IRP,上下文切換等)操作的時間。如果作業系統花費多餘30%的時間在Privileged Time,如下圖所示,則表示實例正在進行高I/O吞吐相關的操作。
    cpu佔用率100%怎麼解決
  • % Privileged Time#高時,需要進一步檢查% DPC Time% Interrupt Time以及Context Switches/sec的情況。
  • % DPC Time% Interrupt Time很高時,需使用Microsoft  Xperf工具進一步分析,請參考下列文件使用XPerf工具。
  • #Context Switch值很高時,請參考下列文件。
  • #\Processor(*)\% User Time表示處理器用於執行程式程式碼的時間消耗,可以確定哪個應用程式或函數呼叫消耗了較多的時間。
  • User Time情況如下圖所示。
    cpu佔用率100%怎麼解決

適用於

  • 雲端伺服器 ECS

以上是cpu佔用率100%怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn