本文說明如何縮小與 Linux 上 Defender for Endpoint 相關的效能問題。 診斷工具可協助您理解並緩解影響績效的現有資源短缺與流程。 這些診斷工具也能用來提升 Microsoft Defender 入口網站的可見性。 一個或多個硬體子系統的瓶頸主要會造成效能問題,這取決於系統中資源利用的特性。 有時應用程式對磁碟 I/O 資源敏感,可能需要更多 CPU 容量;有時某些配置無法持續,可能會觸發過多新程序,開啟過多檔案描述符。
根據你執行的應用程式和裝置特性,在 Linux 上執行 Defender for Endpoint 時,可能會遇到效能不佳的情況。 特別是,在短時間內存取大量資源(如 CPU、磁碟和記憶體)的應用程式或系統程序,可能會導致 Linux 版 Defender for Endpoint 的效能問題。
警告
開始前, 請確認裝置上目前沒有其他安全產品。 多個安全產品可能會衝突,影響主機效能。
使用 Linux 上 適用於端點的 Microsoft Defender 診斷工具,有三種不同的方法可以排除雜訊程序和目錄:
- 使用即時保護統計
- 使用熱事件來源
- 使用 eBPF 統計
利用即時保護統計(RTS)排除效能問題
適用於:
- 只有與防毒軟體相關的效能問題
RTP) 的即時保護 (Defender for Endpoint 在 Linux 上的一項功能,能持續監控並保護您的裝置免受威脅。 它包含檔案與程序監控及其他啟發式方法。
以下步驟可用來排除並減輕這些問題:
使用以下任一方法關閉即時保護,觀察效能是否提升。 這種方法有助於縮小 Defender for Endpoint 在 Linux 上是否加劇效能問題的範圍。 如果您的裝置非由組織管理,可以從命令列關閉即時保護功能:
mdatp config real-time-protection --value disabledConfiguration property updated如果您的組織管理您的裝置,管理員可以依照 Linux 上 Defender for Endpoint 設定偏好設定中的指示,關閉即時保護功能。
注意事項
如果即時保護關閉時效能問題持續存在,問題的根源也可能是端點偵測與回應 (EDR) 元件。 在這種情況下,你需要在防毒軟體和 EDR 中加入全域排除。 在這種情況下,請依照「 使用熱事件來源排除效能問題」章節中的步驟操作。
要找出觸發最多掃描的應用程式,你可以使用 Defender for Endpoint 在 Linux 上收集的即時統計數據。
注意事項
此功能可在版本 100.90.70 或更新版本中提供。
此功能預設在
Dogfood和InsiderFast頻道上啟用。 如果你使用不同的更新頻道,這個功能可以從命令列啟用:mdatp config real-time-protection-statistics --value enabled此功能需啟用即時保護。 要檢查即時保護狀態,請執行以下指令:
mdatp health --field real_time_protection_enabled確認
real_time_protection_enabled該條目為true。 否則,請執行以下指令來啟用:mdatp config real-time-protection --value enabledConfiguration property updated要收集最新統計數據,請執行:
mdatp diagnostic real-time-protection-statistics --output json注意事項
使用
--output json(音符,雙橫劃) 確保輸出格式已準備好進行解析。此指令的輸出會顯示所有程序及其相關的掃描活動。
輸入以下指令:
mdatp diagnostic real-time-protection-statistics --sort --top 4輸出是四大效能問題主要來源的清單。 例如,指令的輸出大致如下:
===================================== Process id: 560 Name: NetworkManager Path: "/usr/sbin/NetworkManager" Total files scanned: 261 Scan time (ns): "3070788919" Status: Active ===================================== Process id: 1709561 Name: snapd Path: "/snap/snapd/23545/usr/lib/snapd/snapd" Total files scanned: 247 Scan time (ns): "19926516003" Status: Active ===================================== Process id: 596 Name: systemd-logind Path: "/usr/lib/systemd/systemd-logind" Total files scanned: 29 Scan time (ns): "716836547" Status: Active ===================================== Process id: 1977683 Name: cupsd Path: "/usr/sbin/cupsd" Total files scanned: 20 Scan time (ns): "985110892" Status: Active =====================================為了提升 Defender for Endpoint 在 Linux 上的效能,請在該
Total files scanned列中找到數字最高的那個,並為其加入防毒排除, (仔細評估排除) 是否安全。 欲了解更多資訊,請參閱 Linux 上 Defender for Endpoint 的配置與驗證排除事項。注意事項
應用程式將統計資料儲存在記憶體中,僅追蹤自啟動後的檔案活動,並啟用即時保護。 在即時保護關閉之前或期間啟動的程序不計入。 此外,僅計算觸發掃描的事件。
使用 Hot Event Sources 排除效能問題
適用於:
- 檔案和可執行檔的效能問題,這些檔案佔用了整個檔案系統中大部分的 CPU 週期。
熱事件來源是一項功能,讓客戶能辨識導致高資源消耗的程序或目錄。 要調查哪個程序/執行檔產生最多雜訊,請依照以下步驟進行。
注意事項
這些指令需要你擁有根權限。 確保 sudo 是可使用的。
首先,檢查你機器的對數值。
mdatp health --field log_level
如果不是在「除錯」,你需要改成關於熱門檔案/執行檔的詳細報告。
sudo mdatp log level set --level debug
Log level configured successfully
為了收集檔案) (的最新統計資料,
sudo mdatp diagnostic hot-event-sources files
輸出看起來和控制台上的畫面類似 (這只是整個輸出) 的片段。 這裡,第一列顯示) 出現頻率 (計數,第二列顯示檔案路徑。
Total Events: 11179 Time: 12s. Throughput: 75.3333 events/sec.
=========== Top 684 Hot Event Sources ===========
count file path
2832 /mnt/RamDisk/postgres_data/pg_wal/0000000100000014000000A5
632 /mnt/RamDisk/postgres_data/base/635594/2601
619 /mnt/RamDisk/postgres_data/base/635597/2601
618 /mnt/RamDisk/postgres_data/base/635596/2601
618 /mnt/RamDisk/postgres_data/base/635595/2601
616 /mnt/RamDisk/postgres_data/base/635597/635610
615 /mnt/RamDisk/postgres_data/base/635596/635602
614 /mnt/RamDisk/postgres_data/base/635595/635606
514 /mnt/RamDisk/postgres_data/base/635594/635598_fsm
496 /mnt/RamDisk/postgres_data/base/635597/635610_fsm
此指令會產生一份熱事件來源報告,存於您的本地資料夾中,供進一步調查。 輸出看起來像是 json 檔案的後續;
{
"startTime": "1729535104539160",
"endTime": "1729535117570766",
"totalEvent": "11373",
"eventSource": [
{
"authCount": "2832",
"csId": "",
"notifyCount": "0",
"path": "/mnt/RamDisk/postgres_data/pg_wal/0000000100000014000000A5",
"pidCount": "1",
"teamId": ""
},
{
"authCount": "632",
"csId": "",
"notifyCount": "0",
"path": "/mnt/RamDisk/postgres_data/base/635594/2601",
"pidCount": "1",
"teamId": ""
}
]
}
在範例中,我們可以看到 /mnt/RamDisk/postgres_data/pg_wal/0000000100000014000000A5 產生最多活動。 同樣地,執行檔也是如此,
sudo mdatp diagnostic hot-event-sources executables
輸出看起來和主機上的類似。
Total Events: 47382 Time: 18s. Throughput: 157 events/sec.
=========== Top 23 Hot Event Sources ===========
count executable path
8216 /usr/lib/postgresql/12/bin/psql
5721 /usr/lib/postgresql/12/bin/postgres (deleted)
3557 /usr/bin/bash
378 /usr/bin/clamscan
88 /usr/bin/sudo
70 /usr/bin/dash
30 /usr/sbin/zabbix_agent2
10 /usr/bin/grep
8 /usr/bin/gawk
6 /opt/microsoft/mdatp/sbin/wdavdaemonclient
4 /usr/bin/sleep
這是以 json 格式儲存在熱事件來源報告中的輸出;
{
"startTime": "1729534260988396",
"endTime": "1729534280026883",
"totalEvent": "48165",
"eventSource": [
{
"authCount": "8126",
"csId": "",
"notifyCount": "0",
"path": "/usr/lib/postgresql/12/bin/psql",
"pidCount": "2487",
"teamId": ""
},
{
"authCount": "5127",
"csId": "",
"notifyCount": "0",
"path": "/usr/lib/postgresql/12/bin/postgres",
"pidCount": "2144",
"teamId": ""
}
]
}
在這個例子中,經過 18 秒後,指令顯示執行檔;/usr/lib/postgresql/12/bin/psql 和 /usr/lib/postgresql/12/bin/postgres 產生最多的活動。
調查完成後,你可以把日誌等級改回「資訊」。
sudo mdatp log level set --level info
Log level configured successfully
為了提升 Linux 上 Defender for Endpoint 的效能,請在計數列中找到編號最高的路徑,並新增全域程序排除 ( (如果) 是可執行檔) 或全域檔案/資料夾排除, (仔細評估排除) 是否安全。 欲了解更多資訊,請參閱 Linux 上 Defender for Endpoint 的配置與驗證排除事項。
使用 eBPF 統計資料排除效能問題
適用於:
- 所有檔案/程序事件,包括系統呼叫的效能問題。
eBPF (擴展的 Berkeley 封包過濾器) 統計指令,能洞察產生最多檔案事件的頂端事件/程序,以及它們的系統呼叫 ID。 當系統呼叫從系統發出時,系統會產生大量工作負載。 eBPF 統計可用來識別此類問題。
要使用 eBPF 統計收集當前統計,請執行:
mdatp diagnostic ebpf-statistics
輸出直接顯示在主控台上,看起來類似以下 (但這只是整個輸出) 的一小段:
Top initiator paths:
/usr/lib/postgresql/12/bin/psql : 902
/usr/bin/clamscan : 349
/usr/sbin/zabbix_agent2 : 27
/usr/lib/postgresql/12/bin/postgres : 10
Top syscall ids:
80 : 9034
57 : 8932
60 : 8929
59 : 4942
112 : 4898
90 : 179
87 : 170
119 : 32
288 : 19
41 : 15
此指令會監控系統 20 秒並顯示結果。 這裡最頂端的發起者路徑 (postgresql/12/bin/psql) 顯示產生最多系統呼叫的程序路徑。
為了提升 Linux 上 Defender for Endpoint 的效能,請找出排中Top initiator path最高的count那個,並為其新增全域程序排除, (仔細評估排除) 是否安全。 欲了解更多資訊,請參閱 Linux 上 Defender for Endpoint 的配置與驗證排除事項。
設定全域排除以提升效能
在 Linux 上設定 適用於端點的 Microsoft Defender,並排除導致效能問題的程序或磁碟位置。 如需詳細資訊,請參閱設定及驗證 Linux 上適用於端點的 Microsoft Defender 排除項目。 如果仍有效能問題,請聯絡客服以獲得進一步指示與緩解措施。