Monitoringhost.exe is consuming high cpu load on SQL

Hi all,

MonitoringHost.exe is consuming 100% CPU and blocking the SQL server in some cases.

We’ve seen this high load on machines with a SQL installation in combination with the OpsMgr SQL management pack.

This issue is already addressed to the product group and they are going to fix this issue in the future.

Until the fix has released there exist a workaround, which can be applied to all SCOM managed SQL Machines independently of the OS.

 

You can find more details under:

https://msdn.microsoft.com/en-us/library/ee809360.aspx

Hosting-related Registration Keys:

Some default aspects of script execution and behavior in Operations Manager-hosted Windows PowerShell scripts can be customized by setting registry keys. These values can be found in the following node in the registry:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Modules\Global\PowerShell

 

The following table shows the registry keys used to control script execution behavior for Windows PowerShell scripts run from an Operations Manager module:

Key Description Default Value

ScriptLimit

Controls how many hosted Windows PowerShell scripts are allowed to run globally. 0x00000014

IsolationLevel

Specifies whether a separate AppDomain will be used for each script. A value of 1 indicates that a separate AppDomain is used for each script.

0x00000000

 

 

You have many ways to accomplish this. Maybe as a .reg file like this:

 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Modules\Global]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Modules\Global\Powershell]

"ScriptLimit"=dword:00000014

"IsolationLevel"=dword:00000000

 

Or maybe with .ps1 file like this:

New-Item -Path "HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Modules\Global" -Name Powershell –Force

new-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Modules\Global\Powershell" -name IsolationLevel` -value 0 -force -PropertyType DWORD

new-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Modules\Global\Powershell" -name ScriptLimit` -value 14 -force -PropertyType DWORD

 

Big thanks to Stefan Wuchenauer for sharing this information!