修復 msmpeng.exe 佔用 CPU、記憶體和磁碟空間過高的問題

消除 Windows 系統中 msmpeng.exe 進程造成的 CPU、記憶體和磁碟佔用過高問題。取得徹底的解決方案,立即恢復電腦速度並減輕系統負擔。

你需要知道的最重要的事情

  • 排除 Windows Defender 的私人資料夾和密集型 I/O 工作負載,以減少資源消耗,同時要考慮到保護範圍。
  • 將 Windows Defender 掃描任務重新安排到非工作時間,以避免處理器和記憶體消耗持續激增。
  • 指定 MsMpEng.exe 可透過工作管理員暫時使用的處理器核心數,或使用Set-MpPreference -ScanAvgCPULoadFactor永久控制 CPU 使用率。

Microsoft Defender 防毒軟體以名為「反惡意軟體服務執行檔」的後台程序執行,其可執行檔位於[此處應填寫可執行檔路徑]。 MsMpEng.exe 他在賽道上的表現 C:ProgramDataMicrosoftWindows DefenderPlatform當它上升時 CPU 使用率 必須達到30%到60%之間,否則會膨脹。 到達記憶 如果檔案大小達到數十 GB 或磁碟空間不足,其原因幾乎總是即時掃描、計劃內完整掃描或平台更新錯誤,而不是偽裝成 Defender 的惡意軟體。

⚡簡答: 排除 Defender 平台資料夾本身及其不斷重新掃描的繁重工作負載;將計畫掃描移至非尖峰時段;如果 Server 2016/2019 上的記憶體使用率持續上升,請使用該指令回溯 Defender 平台。 MpCmdRun.exe -RevertPlatform.


確認 MsMpEng.exe 是實際原因

以確保 MsMpEng.exe 這才是問題的真正原因;請按照以下步驟操作。點選開啟工作管理員。 Ctrl + Shift + Esc 在“進程”標籤中尋找“反惡意軟體服務執行檔”,或尋找其他程式。 MsMpEng.exe 在「詳細資料」標籤中,右鍵按一下該條目,然後選擇「開啟檔案位置」。合法文件應該位於該路徑內。 C:ProgramDataMicrosoftWindows DefenderPlatform任何透過其他途徑取得的帶有此名稱的文件都應視為可疑文件,並使用額外的掃描工具進行檢查。

啟動、程式安裝、檔案下載或 Outlook 附件開啟時出現的使用量突然激增屬於正常的測試行為。但是,如果持續數小時的高使用量,或重啟後幾分鐘內又恢復到高使用量,則需要使用下述方法進行修復。

任務管理器的螢幕截圖顯示,反惡意軟體服務可執行進程佔用大量資源。

刪除 Defender 資料夾並減少煩人的工作負載

為了降低資源消耗,您可以排除 Defender 本身的資料夾和一些佔用大量資源的工作負載。預設情況下,Defender 會掃描自身平台目錄中的檔案以及其他所有檔案。排除此路徑可以避免重複掃描,而重複掃描是導致桌面和伺服器CPU 使用率過高的常見原因。

1. 按下 Windows 鍵,輸入“Windows 安全中心”,然後開啟它。前往“病毒和威脅防護”,然後點擊“病毒和威脅防護設定”下的“管理設定”。

Windows 安全中心病毒和威脅防護設定的螢幕截圖。

2. 轉到部分 例外 (排除項)點選「新增或移除排除項」。選擇“新增排除項”,然後選擇“資料夾”,並新增兩個路徑。 C:Program FilesWindows Defender 和 C:ProgramDataMicrosoftWindows Defender.

螢幕截圖展示如何在 Windows Defender 設定中新增資料夾例外。

3. 新增實際導致電腦上出現輸入/輸出 (I/O) 操作的工作負載。常見原因包括日誌資料資料夾和資料庫、IIS 主路徑、生成輸出資料夾、容器映像儲存以及 3D/CAD 專案資料夾。您也可以透過選擇“進程”並輸入可執行檔名來排除某些進程。

對於程式化部署或大規模部署,PowerShell 可以處理相同的任務,並且是 Server Core 上唯一實用的選項:


Set-MpPreference -ExclusionPath "C:Program FilesWindows Defender"
Set-MpPreference -ExclusionPath "C:ProgramDataMicrosoftWindows Defender"
Set-MpPreference -ExclusionPath "D:SQLData","D:SQLLogs"
Set-MpPreference -ExclusionExtension ".ldf",".mdf"
Set-MpPreference -ExclusionProcess "sqlservr.exe","w3wp.exe"
使用 PowerShell 新增例外

在 Windows Defender 中新增例外的 PowerShell 命令截圖

⚠️例外情況會縮小保護範圍,排除的內容也會受到影響。務必明確具體,切勿排除整個使用者設定檔或磁碟機。


請重新安排全面檢查的時間,以免與您的工作衝突。

完整掃描和快速掃描作為排程任務運行,如果系統在預期時間內未處於空閒狀態,則可能在中午啟動。將它們安排在特定的、可預測的時間段內通常可以消除 CPU 使用率持續飆升的嚴重問題。

1. 按下 Windows + R,然後鍵入 taskschd.msc按 Enter 鍵。在左側窗格中,前往「任務排程程式庫」>「Microsoft」> Windows Windows Defender。

Windows Defender 中任務排程程式庫的螢幕截圖

2. 雙擊「Windows Defender 計畫掃描」。在“條件”標籤中,取消選取“僅當電腦處於閒置狀態時啟動任務”、“僅當電腦連接到交流電源時啟動任務”和“僅當以下網路連接可用時啟動”,然後按“確定”。此步驟旨在防止 CPU 和記憶體使用率意外過高。

Windows Defender 排程掃描條件設定的螢幕截圖

3. 再次開啟任務,前往“觸發器”,新增一個“每週”觸發器,觸發時間為裝置運行但未使用的時間段,例如午餐時間或夜間。對「Windows Defender 快取維護」、「Windows Defender 清理」和「Windows Defender 驗證」任務重複此設置,以確保它們不會同時累積。

Windows Defender 計畫掃描觸發器設定的螢幕截圖

指定 MsMpEng.exe 可以使用的處理器核心數。

如果工作過程中必須進行掃描,限制掃描程序使用的處理器核心數可以防止其佔用全部 CPU 資源。這是一種臨時措施,在進行大量一次性掃描時尤其有效。

1. 開啟任務管理器,然後前往「詳細資料」標籤。尋找以下內容: MsMpEng.exe然後右鍵單擊它,選擇“設定關聯性”。

螢幕截圖顯示了任務管理器中 MsMpEng.exe 進程的「設定關聯性」選項。

2. 取消選擇一半可用核心,然後按一下「確定」。此設定在進程重新啟動後會重置,因此請使用 Defender 的 CPU 節流功能來永久設定此設定。


Set-MpPreference -ScanAvgCPULoadFactor 25
限制 Defender 掃描的 CPU 使用率

該值是計劃掃描的百分比上限,預設為 50。較低的值會降低對效能的影響,但會增加掃描持續時間。


如果峰值持續存在,請停用雲端保護和採樣。

在頻寬有限的網路或低配置設備上,雲端搜尋和自動採樣會增加 CPU 和磁碟佔用。停用這些功能有助於維持基於本地特徵碼的保護。

開啟 Windows 安全中心,然後前往“病毒和威脅防護”,點擊“管理設定”,關閉“雲端交付防護”和“自動樣本提交”。修復根本問題後,重新啟用它們;雲端防護可以顯著提高對新威脅的偵測能力。

Windows 安全中心病毒和威脅防護設定的螢幕截圖。

修復 Windows 伺服器上 Defender 平台中的記憶體洩漏

它顯示了伺服器上的特定故障模式。 在Windows Server 2016 和 2019尤其是我的房東們。 允許 和 IIS/SQL消費持續成長 MsMpEng.exe 甚至 佔用所有可用記憶體 (內存儘管消費依然 中央處理器 下降幅度約 3% 至 10%。這是一個平台層面的問題,而不僅僅是配置問題,單靠例外處理無法解決。受影響的主機運行的反惡意軟體平台版本比運行正常的主機更新。

若要檢查版本,請使用PowerShell:


Get-MpComputerStatus | Select-Object AMProductVersion, AMEngineVersion, AntivirusSignatureVersion
檢查 Defender 平台和引擎版本

一張顯示Defender平台和引擎版本的螢幕截圖。

如果伺服器運行的平台版本有記憶體洩漏,請回滾到先前的平台版本並強制更新簽章。回滾指令位於目前活動平台資料夾中。


cd "C:ProgramDataMicrosoftWindows DefenderPlatform4.18.23110.3-0"
.MpCmdRun.exe -RevertPlatform
.MpCmdRun.exe -RemoveDefinitions -Engine
.MpCmdRun.exe -RemoveDefinitions -All
.MpCmdRun.exe -SignatureUpdate
將 Defender 平台回滾到先前的版本

回滾完成後,記憶體將立即釋放。應在WSUS或Configuration Manager中封鎖有問題的平台更新,直到採用穩定版本為止,並確保主機運行的是已知且穩定的平台,然後再重新啟用自動更新。較新的平台版本已修復此漏洞,因此一旦您的叢集運行在穩定且經過驗證的版本上,則不再需要此回滾過程。有關大量問題的更有效解決方案,請參閱我們的其他文章。

螢幕截圖顯示 Defender 平台恢復後釋放了記憶體。

使用微軟的效能工具診斷問題

如果異常和重新調度無法解釋過載問題,那麼必須確定 Defender 實際掃描的是哪些檔案或進程。 Windows 內建了 Defender 效能分析器工具,它可以產生日誌供您查看。


New-MpPerformanceRecording -RecordTo .defender.etl
# reproduce the high CPU/memory for a few minutes, then stop with Ctrl+C
Get-MpPerformanceReport -Path .defender.etl -TopFiles 20 -TopScans 20 -TopProcesses 20
Defender效能記錄與分析

該報告對耗時最長的檔案、副檔名、進程和掃描原因進行了分類。利用此輸出結果,您可以添加精確的異常處理,而無需猜測。進程監視器工具提供了此功能,並將進程名稱篩選器設定為[不確定 - 可能是「進程名稱」]。 MsMpEng.exe如果您更喜歡即時跟踪,也能獲得相同的洞察。


何時應該考慮停用 Microsoft Defender?

完全停用 Windows Defender 是最後的手段,並非永久解決方案,而且會使系統完全依賴其他已安裝的防毒軟體。此措施僅適用於已安裝受支援的第三方防毒程式的情況;在這種情況下,Windows Defender 將自動停用,且反惡意軟體服務可執行檔應已處於非活動狀態。

在 Windows 專業版和企業版中,群組原則路徑為:電腦設定 > 管理範本 > Windows 元件 > Microsoft Defender 防毒軟體 > 關閉 Microsoft Defender 防毒軟體,並且必須設定為「已啟用」。較新版本的 Windows 會強制執行防篡改保護功能,該功能會阻止登錄值。 DisableAntiSpyware 由於版本較舊,此解決方法在標準安裝中已不再有效,不應依賴此方法。如果需要在伺服器上暫時停用 Defender,更改本機原則即可將其終止。 MsMpEng.exe 無需重啟即可立即生效,這對於在維護窗口期之前爭取時間非常有用。

透過在任務管理器中監控反惡意軟體服務可執行文件,至少執行一個完整的排程掃描週期,來驗證修復是否生效。掃描間隙,CPU 使用率應接近零;工作集記憶體應穩定在數百兆位元組,而不是無限增長;活動掃描完成後,磁碟活動應減少。

評論被關閉。