共用方式為


在 Linux 上排解 適用於端點的 Microsoft Defender 的效能問題

本文說明如何縮小與 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 上的一項功能,能持續監控並保護您的裝置免受威脅。 它包含檔案與程序監控及其他啟發式方法。

以下步驟可用來排除並減輕這些問題:

  1. 使用以下任一方法關閉即時保護,觀察效能是否提升。 這種方法有助於縮小 Defender for Endpoint 在 Linux 上是否加劇效能問題的範圍。 如果您的裝置非由組織管理,可以從命令列關閉即時保護功能:

    mdatp config real-time-protection --value disabled
    
    Configuration property updated
    

    如果您的組織管理您的裝置,管理員可以依照 Linux 上 Defender for Endpoint 設定偏好設定中的指示,關閉即時保護功能。

    注意事項

    如果即時保護關閉時效能問題持續存在,問題的根源也可能是端點偵測與回應 (EDR) 元件。 在這種情況下,你需要在防毒軟體和 EDR 中加入全域排除。 在這種情況下,請依照「 使用熱事件來源排除效能問題」章節中的步驟操作。

  2. 要找出觸發最多掃描的應用程式,你可以使用 Defender for Endpoint 在 Linux 上收集的即時統計數據。

    注意事項

    此功能可在版本 100.90.70 或更新版本中提供。

    此功能預設在 DogfoodInsiderFast 頻道上啟用。 如果你使用不同的更新頻道,這個功能可以從命令列啟用:

    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 enabled
    
    Configuration property updated
    

    要收集最新統計數據,請執行:

    mdatp diagnostic real-time-protection-statistics --output json
    

    注意事項

    使用 --output json (音符,雙橫劃) 確保輸出格式已準備好進行解析。

    此指令的輸出會顯示所有程序及其相關的掃描活動。

  3. 輸入以下指令:

    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 排除項目。 如果仍有效能問題,請聯絡客服以獲得進一步指示與緩解措施。

另請參閱