리소스 풀 메모리 사용

Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption (UnitMonitor)

리소스 풀에 사용된 메모리 양이 지정된 리소스 풀의 메모리 액세스에 최적화된 데이터 테이블에 사용 가능한 메모리 비율로 표현되는 임계값 설정보다 큰 경우 모니터가 위험 상태를 보고하고 알림을 발생시킵니다.

Knowledge Base article:

요약

리소스 풀에 사용된 메모리 양이 지정된 리소스 풀의 메모리 액세스에 최적화된 데이터 테이블에 사용 가능한 메모리 비율로 표현되는 임계값 설정보다 큰 경우 모니터가 위험 상태를 보고하고 알림을 발생시킵니다.

메모리 최적화 테이블이 있는 데이터베이스에 매핑되는 경우 명명된 리소스 풀은 메모리 최적화 데이터 엔진에 있는 다양한 구조에 사용되는 내부 테이블을 포함하여 모든 메모리 최적화 테이블에 할당된 메모리를 추적합니다.

원인

SQL Server 메모리 액세스에 최적화된 데이터는 SQL Server보다 더 많은 메모리를 SQL Server와 다른 방식으로 사용합니다. 메모리 액세스에 최적화된 데이터를 위해 설치하고 할당한 메모리 양이 증가하는 요구를 충족시키기에 부족할 수 있습니다. 이 경우 메모리가 부족해질 수 있습니다.

자세한 내용은 다음 문서를 참조하세요. 메모리 액세스에 최적화된 테이블이 있는 데이터베이스를 리소스 풀에 바인딩

해결 방법

메모리 부족 또는 메모리 부족 상태를 해결하려면 사용량을 줄여 기존 메모리를 확보하거나, 더 많은 메모리를 메모리 액세스에 최적화된 데이터 테이블에 사용할 수 있게 해야 합니다. 가능한 수정 조치는 다음과 같습니다.

외부

메모리 액세스에 최적화된 데이터 메모리 관리 방법

재정의 가능한 매개 변수

이름

설명

기본값

경고 우선 순위

알림 우선 순위를 정의합니다.

보통

경고 심각도

알림 심각도를 정의합니다.

오류

사용

워크플로 사용하거나 사용하지 않도록 설정합니다.

알림 생성

워크플로에서 알림을 생성하는지 여부를 정의합니다.

간격(초)

워크플로를 실행하는 반복 시간 간격(초)입니다.

900

샘플 수

상태가 변경되기 전 측정된 값이 임계값을 위반한 횟수를 나타냅니다.

6

동기화 시간

24시간 형식으로 지정된 동기화 시간입니다. 생략될 수 있습니다.

 

임계값

수집된 값이 이 매개 변수와 비교됩니다.

90

시간 제한(초)

여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다.

300

데이터베이스 연결 시간 제한(초)

워크플로는 지정된 기간 동안 데이터베이스에 액세스할 수 없으면 실패하며 이벤트를 등록합니다.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.UserResourcePool
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.UserResourcePool.MemoryConsumption
RemotableTrue
AccessibilityPublic
Alert Message
Windows의 MSSQL: 메모리 최적화 데이터: 리소스 풀이 너무 많은 메모리를 사용 중입니다.
리소스 풀 "{0}"이(가) 너무 많은 메모리를 사용 중입니다.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption" Target="SqlDiscW!Microsoft.SQLServer.Windows.UserResourcePool" ParentMonitorID="Health!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.Windows.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<Threshold>90</Threshold>
<NumSamples>6</NumSamples>
<PoolName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</PoolName>
</Configuration>
</UnitMonitor>