運行於 Azure 虛擬機上 monitoringhost.exe 中的高 CPU

近來有位使用者告訴我們,他在兩個作為網路伺服器運行的 Azure 虛擬機上遇到高 CPU 問題。消耗 CPU 的進程是 monitoringhost.exe,它是微軟監控主機服務的子進程:微軟 OpsMgr 和 Log Analytics Agent。

這項進程的作用是透過 OpsMgr 或 Azure Log Analytic的配置來監控和蒐集資料。現在,我檢視這個進程的狀況,並發現它正在運行以下任務:

Microsoft_EnterpriseManagement_Mom_Modules_CloudFileUpload!Microsoft.EnterpriseManagement.Mom.Modules.CloudFileUpload.AsyncStreamHashCalculator.ReadStreamCallbac

於是,我們知道它正在上傳一個檔案到工作區,並同時計算 hash。

進一步檢視這個過程的話,可以看到我們正在上傳以下這個檔案:

C:\Program Files\Microsoft Monitoring Agent\Agent\Health Service State\Monitoring Host Temporary Files 319\45\W3SVC1-u_extend1.log.iislog

我們正在上傳一個 IIS log,您可以輕鬆的叫 Log Analytics 替您完成這件事。

我們在受影響的 servers 上檢查這些記錄檔案,並發現它們檔案大小加起來大約 14-15 GB。

正如下圖所示,這些記錄檔案已經被設置成不會循環 (never rollover)。

將這些檔案改成按時程循環,可以管理檔案大小,並讓 CPU 使用量回復到正常狀態。

因此,這篇的重點在於,當您要傳送多餘的數據到 OMS/Log Analytics 時,務必仔細些:花點心力在確認您要求服務的內容,以及將要上傳的資料。