1229 : 프로세스 ID 125:294이(가) 1 스케줄러 프로세스를 차단하는 리소스를 가지고 있습니다.


이벤트뷰어에서 위와 같은 에러가 발생할 경우

해당 로그의 1229번의 의미는 특정 세션에서 쓰레드를 잡고 놔주지 않고 있을 때 발생하는 것입니다.


또한 해당 로그의 의미는 SP ID 가 125 번의 세션이 294개의 쓰레드를 병렬로 사용하여, 더 이상 사용 가능한 쓰레드가 없는 경우입니다.

 

SQL 서버의 기본 쓰레드가 255개 이며, 레지스트리 수정 등으로 조금 더 많이 사용할 수 있다고는 하지만, 하나의 세션에서 거의 모든 쓰레드를 사용 중인 상태입니다.

 

이와 같은 경우는 무거운 쿼리 (인덱스 리빌드, 대량 SELECT 등등) 영향이며, 근본적인 해결 방법은 쿼리를 수정하는 것이지만, 현실적으로 어렵기 때문에 max degree of parallelism 값을 수정하여 병렬처리의 수를 제한하는 방법을 사용합니다.

 

max degree of parallelism 값은 일반적으로 이러한 경우가 발생하였을 때, 값을 4 또는 8 로 설정한다고 하는데, MS 엔지니는 일단 4로 설정하는 것을 권장합니다.

 

극단적으로 중요한 온라인 DB 일 경우에는 아예 병렬처리가 안되는 1 로 값을 설정하는 경우도 있습니다.

 

서버전체의 병렬처리 수준을 조정하기 위해서는


sp_configure 'max degree of parallelism', 1 또는 적절한 값으로 변경해 주시면 됩니다.


//