SQL Server 데드락 모니터링 구성하기
Deadlock 뷰를 사용하면 SQL Server 데이터베이스의 데드락 이벤트를 탐색할 수 있어요. 데드락은 두 개 이상의 프로세스가 서로가 리소스를 해제하기를 기다리며 진행하지 못하는 상황을 말해요.
출처: 문서
본문
시작하기 전에
이 가이드의 단계를 따르기 전에 SQL Server용 Database Monitoring을 먼저 구성해야 해요.
지원되는 데이터베이스: SQL Server
지원되는 배포 유형: 모든 배포 유형. Azure DB는 Agent 버전 7.64.0 이상에서 지원돼요.
지원되는 Agent 버전: 7.59.0+
설정 (Setup)
Azure DB를 제외한 모든 배포 유형
- SQL Server 데이터베이스 인스턴스에서 Datadog Extended Events (XE) 세션을 만들어요. 인스턴스의 어떤 데이터베이스에서든 세션을 실행할 수 있어요.
참고: Datadog XE 세션이 데이터베이스에 만들어지지 않았다면, 에이전트는 여전히 기본 SQL Server 시스템 상태 XE 세션에서 데드락 이벤트를 수집하려 시도해요.
CREATE EVENT SESSION datadog
ON SERVER
ADD EVENT sqlserver.xml_deadlock_report
ADD TARGET package0.ring_buffer
(
SET MAX_MEMORY = 1024
)
WITH (
MAX_MEMORY = 1024 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MEMORY_PARTITION_MODE = PER_NODE, -- improves performance on multi-core systems (not supported on RDS)
STARTUP_STATE = ON
);
GO
ALTER EVENT SESSION datadog ON SERVER STATE = START;
GO
참고: SQL Server용 Amazon RDS를 사용한다면 세션 구성에서 MEMORY_PARTITION_MODE = PER_NODE 줄을 제거하세요. 이 옵션은 RDS 인스턴스에서 지원되지 않아요.
Datadog 에이전트의 sqlserver.d/conf.yaml에서 데드락을 활성화하세요.
collect_deadlocks: # Renamed from deadlocks_collection in Agent version 7.70.
enabled: true
Azure DB
- SQL Server 데이터베이스에서 Datadog Extended Events (XE) 세션을 만들어요.
CREATE EVENT SESSION datadog
ON database
ADD EVENT sqlserver.database_xml_deadlock_report
ADD TARGET package0.ring_buffer
(
SET MAX_MEMORY = 1024
)
WITH (
MAX_MEMORY = 1024 KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
STARTUP_STATE = ON
);
GO
ALTER EVENT SESSION datadog ON DATABASE STATE = START;
GO
Datadog 에이전트의 sqlserver.d/conf.yaml에서 데드락을 활성화하세요.
collect_deadlocks: # Renamed from deadlocks_collection in Agent version 7.70.
enabled: true
데드락 이벤트 탐색하기
데드락 뷰에 접근하려면 APM > Database Monitoring > Databases 탭으로 이동해서 SQL Server 호스트를 선택하세요. 다음으로 Queries 탭을 선택한 뒤 Deadlocks 탭을 선택하세요. Deadlocks 탭에서는 희생(victim) 프로세스와 생존(survivor) 프로세스에 대한 세부 정보를 표시하고, 데드락 다이어그램으로 연결되는 링크를 포함해요.
참고: 데드락은 드물게 발생하므로 데드락 정보가 바로 보이지 않을 가능성이 커요.