반응형
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
반응형
'MSSQL' 카테고리의 다른 글
MSSQL : 등록된 서버 Registered Servers (1) | 2023.11.28 |
---|---|
MSSQL : Alter Login을 사용한 패스워드 변경 (0) | 2023.11.27 |
MSSQL : Identity Jump 1000 (1) | 2023.11.27 |
MSSQL : sp_MSforeachdb, sp_MSforeachtable 활용하기 (1) | 2023.11.23 |
MSSQL : Procedure xp_instance_regread (0) | 2023.11.22 |