SP_SERVER_DIAGNOSTICS_SLEEP is recorded by the background system health monitor thread while it sleeps between runs of sp_server_diagnostics, the built-in health check procedure added in SQL Server 2012 to power automatic failure detection for Availability Groups and failover clusters. The procedure runs on a fixed cadence; this wait is the gap between runs.
Every instance from 2012 onward carries it, AGs or not.
Is It a Problem?
No; it can be safely ignored and belongs on the benign filter list. Its total is a function of uptime, and it says nothing about the health results the procedure produces, which is the part that actually matters.
Those results are worth knowing about: sp_server_diagnostics output feeds the system_health machinery and cluster health evaluation, and you can run the procedure yourself during incidents for a component-by-component health snapshot (system, resource, query_processing, io_subsystem, events).
Common Causes
- The instance being up; the health monitor always runs on its schedule.
What To Do
- Filter it out; our
Get-WaitStatisticsscript excludes it by default. - Remember the underlying procedure as an incident tool:
EXEC sp_server_diagnostics;gives a live health readout when things are strange. - For AG failover sensitivity questions, the related knobs are the AG’s
HEALTH_CHECK_TIMEOUTand failure condition level, not this wait.
How To See It
Rank waits with Get-WaitStatistics, where it is filtered as background noise.
Part of the SQL Server Wait Types Library.
Related deep dive: SOS_SCHEDULER_YIELD Wait Type.
Leave a Reply