MSSQLSERVER_17883
Applies to: SQL Server
Details
Attribute | Value |
---|---|
Product Name | SQL Server |
Event ID | 17883 |
Event Source | MSSQLSERVER |
Component | SQLEngine |
Symbolic Name | SRV_SCHEDULER_NONYIELDING |
Message Text | Process %ld:%ld:%ld (0x%lx) Worker 0x%p appears to be non-yielding on Scheduler %ld. Thread creation time: %I64d. Approx Thread CPU Used: kernel %I64d ms, user %I64d ms. Process Utilization %d%%. System Idle %d%%. Interval: %I64d ms. |
Explanation
Indicates that there's a possible problem with a thread not yielding on a scheduler. This error may be caused by an operating system condition, environment issue, or software issue in SQL Server, or if SQL Server isn't getting enough cycles to execute. This error may go away if the thread eventually yields.
User action
If you look at the error message information, you see that certain behaviors emerge. For example:
If user mode time quickly climbs and continues to do so, the likely cause is an unbounded loop in the SQL Server engine that isn't properly yielding.
If kernel mode time climbs quickly, the thread is spending most its time in the operating system, and requires kernel debugging to determine the root cause of this behavior.
If the kernel time and the user time aren't increasing quickly, the thread is likely waiting for an API call such as
WaitForSingleObject
,Sleep
,WriteFile
, orReadFile
to return. Or, the thread may not be getting scheduled by the operating system. API stall conditions generally require kernel mode debugging to determine their root cause.If
System Idle %
is low andProcess Utilization %
is low, then SQL Server might not be getting enough CPU cycles. Check the CPU utilization of other applications on the system. Also, check to see if paging is going on in the system. RunningSELECT * FROM sys.dm_os_ring_buffers
can provide more details as well.If
kernel + user
times are low butProcess Utilization %
is high, the error condition could indicate that preemptive thread(s) are consuming all the CPU (for example, garbage collection).
Combining information with the system utilization and idle time can provide insight into the nature of the problem.
To understand the detection logic and common reasons that generate this error condition, refer to How To Diagnose and Correct Errors 17883, 17884, 17887, and 17888.