全部產品
Search
文件中心

Simple Application Server:Windows執行個體中CPU使用率較高問題的排查及解決方案

更新時間:Aug 14, 2024

本文主要介紹Windows執行個體中CPU使用率較高問題的排查及解決方案。

問題現象

Windows執行個體中CPU使用率較高,即CPU使用率≥80%。

問題原因

CPU使用率較高可能有以下原因。

  • 執行個體遭到病毒木馬入侵。

  • 執行個體中第三方殺毒軟體運行。

  • 執行個體中應用程式異常、驅動異常、高I/O使用率或高中斷處理的應用程式。

解決方案

步驟一:定位問題

通過微軟工具(工作管理員、資源監視器等)抓取系統Full Memory Dump,來定位CPU使用率過高的問題。在流量大的情況下,您還可以使用Wireshark抓取一段時間的網路包,分析流量使用方式。

本文以Windows Server 2022系統資源監視器為例,介紹如何定位CPU使用率較高的問題。其他常見工具,請參見常見工具

  1. 使用VNC遠端連線Simple Application Server。具體操作,請參見通過救援遠端連線(控制台)

  2. 在案頭底部單擊開始菜單,選擇運行

  3. 運行框中輸入perfmon -res,單擊確定

    image

  4. 資源監視器頁面中,查看各進程是否有CPU使用率過高的現象。

    image

  5. 針對佔用CPU資源較高的進程,查看對應的進程ID和進程的程式名。

  6. 開啟工作管理員,工作管理員的詳細資料頁簽下,找到之前資源監視器查看到的異常進程名和對應的PID。按右鍵進程名稱,選擇開啟檔案所在的位置(O),查看進程是否為惡意程式。

步驟二:分析處理

判斷影響CPU使用率過高的進程屬於正常進程或是異常進程,並按照下述相應步驟處理。

可能原因

具體操作

正常進程

一般情況下,當頻繁訪問業務,或由於Windows自身服務(更新服務等)都可能會佔用較高網路流量和CPU 。

說明
  • Windows Server 2008或Windows Server 2012執行個體建議記憶體配置在2 GiB或者2 GiB以上。

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

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

  • 建議在伺服器上安裝殺毒軟體進行殺毒。如有安裝殺毒軟體,請檢查CPU使用率較高時,殺毒軟體是否在後台執行掃描操作。如果可能,請升級殺毒軟體到最新版本,或者刪除殺毒軟體。

  • 檢查該伺服器內應用程式是否有大量的磁碟訪問、網路訪問行為或高計算需求。通過嘗試升配執行個體規格的方式,使用更多核心數或記憶體的規格來解決資源瓶頸問題。更多資訊,請參見升級配置

  • 若自身伺服器配置較高,再去升級配置已無太大意義。架構方面也並非是伺服器配置越高就越好。此時,您需要嘗試進行應用分離,通過不同的伺服器去承載不同的應用,同時對相關程式進行最佳化。

    比如資料庫完全通過RDS來承載,減輕伺服器本身的資源消耗和伺服器內部大量的調用。而程式最佳化方面,您可以根據自身的配置狀況進行調整,具體的操作有調整串連數、緩衝配置、Web和資料庫調用時的各項參數等。

異常進程

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

說明

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

  • 使用商業版殺毒軟體,或使用微軟免費安全工具Microsoft Safety Scanner,在安全模式下進行掃描殺毒。

  • 運行Windows Update來安裝最新的微軟安全補丁。

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

  • 若伺服器或網站遭受DDoS攻擊或CC攻擊等,短期內產生大量的訪問需求。您可以登入Security Center,查看Security Center中的防護DDoS攻擊是否調整好閾值,並核實是否開啟CC防護。如果攻擊沒有觸發到閾值,Security Center沒有清洗,可以聯絡售後協助開啟清理。

常見工具

以下是關於Windows系統中定位CPU使用率過高問題工具的簡要說明。

工作管理員

工作管理員可以直觀查看應用程式列表,定位佔用CPU較高的應用程式,如下是工作管理員頁面。

image

在效能頁面檢查CPU使用率時,按右鍵CPU使用率圖示,單擊將圖形更改為(H) > 邏輯處理器(L)

如下圖顯示了2個邏輯CPU的使用率。

image

當單個進程的CPU使用率飆升至接近100%時,而其它進程的CPU使用率變化不大,則可能是網路I/O處理造成的。

資源監視器

資源監視器可以直觀查看CPU使用率,還可以通過控制代碼和模組搜尋對應的進程。

image

Process Explorer

Process Explorer是一款Microsoft Sysinternals工具,通過配置正確的Symbols,檢查對應應用程式的線程調用的Call Stack,用以定位可能的問題驅動。下載Process Explorer工具,請參見Process Explorer

如下圖是Process Explorer工具使用頁面。

image

效能監控器

效能監控器(Performance Monitor)是Microsoft專業收集各個組件效能計數器的工具。對於系統CPU資源消耗,有多個Counter來檢查。

Performance有如下三個核心參數。

  • \Processor(_Total)\% Processor Time:CPU執行非空閑線程的時間百分比。\Processor(_Total)\% Processor Time=\Processor(*)\% User Time+\Processor(*)\% Privileged Time.

  • \Processor(*)\% User Time:表示處理器用於執行程式代碼的時間消耗,可以確定哪個應用程式或函數調用消耗了較多的時間。

  • \Processor(*)\% Privileged Time:應用程式在核心中執行系統調用(例如驅動、IRP,環境切換等)操作的時間。如果作業系統花費多於30%的時間在Privileged Time,則說明執行個體進行中高I/O吞吐相關的操作。

    % Privileged Time很高時,需要進一步檢查% DPC Time% Interrupt Time以及Context Switches/sec的情況。