본문 바로가기

MSSQL

MSSQL : Agent Job waiting for a worker thread

반응형

MS SQL에서 Agent Job waiting for a worker thread란 무엇일까요? 

이것은 SQL Server Agent가 동시에 실행할 수 있는 작업의 수를 제한하는 최대 작업자 스레드 설정¹에 도달했을 때 발생하는 현상입니다. 이 경우, 작업이 대기열에 들어가고 다음에 사용 가능한 작업자 스레드가 요청을 처리할 수 있을 때까지 기다립니다. 이 현상은 일반적으로 PowerShell과 같은 특정 작업 서브시스템에서 더 자주 발생합니다.

이 현상을 해결하려면 어떻게 해야 할까요? 

먼저, sp_enum_sqlagent_subsystems을 사용하여 각 작업 서브시스템의 제한을 확인할 수 있습니다. 예를 들어, 제 SQL 서버에서는 T-SQL에 대해 80, CmdExec에 대해 4로 설정되어 있습니다. 그런 다음, sp_configure를 사용하여 max worker threads 옵션을 적절한 값으로 조정할 수 있습니다. 이 값은 SQL Server가 시작할 때 사용 가능한 CPU 수와 시스템 아키텍처에 따라 동적으로 구성됩니다. 그러나 이 값은 너무 높게 설정하면 성능이 저하될 수 있으므로 주의해야 합니다.

 

예시

SELECT  s.subsystem_id, 
        s.subsystem, 
        m.[text] AS [description], 
        s.max_worker_threads
FROM msdb.dbo.syssubsystems s
INNER JOIN msdb.sys.messages m 
    ON  s.description_id = m.message_id 
        AND m.language_id = 1033 --English

UPDATE msdb.dbo.syssubsystems
SET max_worker_threads = 5
WHERE subsystem_id = 12
반응형