SQL Server/SQL Server Tip

DReplay 활성 세션 초과 에러

SungWookKang 2015. 7. 22. 10:26
반응형

DReplay 활성 세션 초과 에러

 

  • Version : SQL Server 2012

 

SQL Server 2012 버전부터 Distributed Replay라는 새로운 기능이 도입 되었다. 이 기능은 SQL Server의 프로파일러와 마찬가지로 Distributed Replay를 사용하여 캡처된 추적을 업그레이드 된 테스트 환경에서 재생할 수 있다.

 

Microsoft SQL Server Distributed Replay 기능은 여러 컴퓨터를 사용하여 추적 데이터를 생성하고 시뮬레이션을 할 수 있는 장점이 있다. 응용 프로그램 호환성 테스트, 성능 테스트 또는 용량계획을 예측하는데 Distributed Replay를 사용할 수 있다.

 

오늘 주제는 SQL Server 2012에 새로 도입된 SQL Server Distributed Replay를 재생할 때 활성 세션 수가 초과하였을 경우 나타나는 에러에 대해서 살펴 보자.

 

Microsoft SQL Server Distributed Replay 관리 도구인 DReplay.exe는 Distributed Replay Controller와 통신하는데 사용할 수 있는 명령 도구 이다. Replay 옵션은 이벤트 재생 단계를 시작하고 컨트롤러는 재생 데이터를 지정된 클라이언트로 발송하고 분산 재생을 시작하며 클라이언트와 동기화를 한다. 필요에 따라 재생에 참여하는 각 클라이언트는 재생 작업을 기록하고 추적 파일을 로컬에 저장할 수 있다.

 

이 포스트는 CSS SQL Server Engineer 팀블로그에 게제된 내용으로 필자가 이해한 내용을 바탕으로 정리하였으며 번역의 오류나 기술적인 오류가 있음을 인지 한다. 자세한 내용은 원문을 참고하길 바란다.

 

DReplay는 내부적으로 진행되는 세션 큐를 유지 관리 한다. 이 대기열은 8192의 길이로 제한되어 연결/해제에 따라 연결 재생 순서로 채워진다. 백그라운드 작업자는 새로운 세션을 추가하고 완료된 세션을 정리하여 재생 작업 큐를 관리 한다.

 

DReplay는 8192의 동시 세션을 재생할 수 있도록 설계되어 있다. 갭처하는 동안 이것은 sys.dm_exec_session이 8192개 이하의 항목이 있어야 한다. 한계를 초과하면 메시지와 함께 대기상태가 나타난다.

 

실제로 동기화 해야하는 세션이 8192를 초과하는 경우 8193, 8194 등의 세션의 재생작업은 이전 작업이 완료 될 때까지 실행되지 않는다.

 

세션을 준비하는 시간보다 재생 시간이 더 오래 걸릴경우 백그라운드 작업자의 수가 세션 한계까지 도달 할 것이다.

 

아래 에러 메시지는 백그라운드 작업이 8192 한계에 도달하여 대기하고 있는 메시지와 재생 작업은 새로이 3개의 세션을 준비하고 다시 세션수가 8192개의 한계에 도달한 내용이다. 백그라운드 작업자는 잠재적인 메모리 문제가 발생하지 않도록 큐의 크기를 제한하고 기다린다.

 

DReplay 로그는 이전에 디스패치 된 커넥션 수를 보여준다. 다음 에러 메시지를 통해 확인 할 수 있다.

2013-07-05 18:59:47:956 OPERATIONAL [Client Replay] 35212 events are dispatched in 8800 connections.

 

 

[참고자료]

 

 

2013-07-25 / 강성욱 / http://sqlmvp.kr

 

 

 

반응형