XE_DISPATCHER_WAIT is recorded by the background dispatcher threads that serve Extended Events asynchronous targets, while they wait for filled event buffers to process. Events accumulate in session buffers; when a buffer is ready (full, or past its dispatch latency), a dispatcher picks it up and delivers it to the target. Between deliveries, the dispatchers sit in this wait.
Idle dispatchers are the normal state on any instance whose event sessions are not firehosing.
Is It a Problem?
No; it is the idle half of the XE delivery machinery and belongs on the benign filter list alongside XE_TIMER_EVENT. Large totals mean the dispatchers spent most of their lives with nothing to deliver, which is healthy.
The interesting inversion: if this wait shrinks while event sessions run hot, dispatchers are flat out, and it is worth checking sessions for buffer pressure (dropped events show in each session’s sys.dm_xe_sessions counters). Even then, the fix is in session design, not this wait.
Common Causes
- Normal Extended Events operation, including the always-on system_health session.
- Quiet event sessions leaving dispatchers idle.
What To Do
- Filter it out of wait analysis.
- If you suspect XE delivery is struggling, check
dropped_event_countand buffer metrics insys.dm_xe_sessions, and tighten event predicates on chatty sessions. - Leave the dispatchers alone; they size and pace themselves.
How To See It
Rank waits with Get-WaitStatistics; it is filtered by default. Session-level DMVs carry the real XE health signals.
Part of the SQL Server Wait Types Library.
Related deep dive: ASYNC_NETWORK_IO Wait Type.
Leave a Reply