페이지 예상 수명

Microsoft.SQLServer.Windows.Monitor.DBEngine.PageLifeExpectancy (UnitMonitor)

DB 엔진의 페이지 예상 수명

Knowledge Base article:

요약

페이지 예상 수명은 페이지가 참조 없이 버퍼 풀에 남아 있는 시간(초)입니다. 페이지 예상 수명이 높으면 하드 드라이브로 이동하지 않고도 캐시에서 필요한 데이터를 찾을 수 있습니다.

원인

페이지 예상 수명 값이 매우 낮으면 다음과 같은 문제를 나타낼 수 있습니다.

시스템의 메모리 부족

SQL Server에 사용하도록 구성된 메모리가 너무 작음

인덱스 디자인이 잘못됨

해결 방법

I/O 시스템에서 부하 처리 방법을 확인합니다. PhysicalDisk 개체의 Average Disk sec/Read 및 Average Disk sec/Write 카운터 값이 높으면(일반적으로 10밀리초 이상), 시스템이 오버로드되었거나 쿼리 및 인덱스를 개선할 여지가 있음을 의미합니다.

SQL Server가 동시에 대량의 테이블을 작업하거나 조건별 검색 대신 전체 검색이 사용될 경우에는 버퍼풀이 발생할 수 있습니다. SQL Server:Access Methods:Full Scans per Second 카운터에서 문제를 확인합니다.

SQL Server Profiler를 사용하고 성능 범주에서 Showplan Statistics를 검색하여 전체 검색을 일으킨 응용 프로그램을 찾을 수 있습니다.

재정의 가능한 매개 변수

이름

설명

기본값

경고 우선 순위

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

보통

경고 심각도

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

오류

사용

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

알림 생성

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

간격(초)

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

300

샘플 수

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

6

동기화 시간

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

 

임계값

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

300

시간 제한(초)

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

200

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

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

15

Element properties:

TargetMicrosoft.SQLServer.Windows.DBEngine
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.DBEngine.PageLifeExpectancy
RemotableTrue
AccessibilityPublic
Alert Message
Windows의 MSSQL: 페이지 예상 수명이 너무 낮습니다.
"{1}" 컴퓨터에서 SQL 인스턴스 "{0}"의 페이지 예상 수명이 너무 낮습니다. 자세한 내용은 " 경고 컨텍스트" 탭을 참조하세요.
RunAsDefault

Source Code:

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