XE_DISPATCHER_WAIT Wait Type in SQL Server

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

  1. Filter it out of wait analysis.
  2. If you suspect XE delivery is struggling, check dropped_event_count and buffer metrics in sys.dm_xe_sessions, and tighten event predicates on chatty sessions.
  3. 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.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *