Extended Events and Consumer/Subscriber Delays


i'm having trouble understanding when , why extended events taking long delivered. max_dispatch_latency 3 seconds can wait indefinitely longer receive extended events. seems events long-running transactions/connections on given database withheld until transaction commits or rolls back.

is there specific requirement open transaction completed before xevents sent out?  or unintentionally introducing requirement special predicates on selected events?

what i'm observing when dig deeper sql profiler gets see events matter of minutes before xe session gets see them.  happens xe events having active transactions/connections still underway.  if transactions short-lived difference in delay between sql profiler , xe sessions negligible (ie. less max_dispatch_latency).

here example of xe session definition:

create

eventsession[abc]onserver



add

eventsqlserver.login(


   

action(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.database_name,sqlserver.nt_username,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username)


   

where ([package0].[equal_boolean]([sqlserver].[is_system],(0))and[package0].[equal_uint64]([sqlserver].[database_id],(54))and[package0].[equal_i_unicode_string]([sqlserver].[database_name],n'reporttracking')and[package0].[not_equal_i_unicode_string]([sqlserver].[client_app_name],n'self data profiling transscrit'))),


 

 


-- ...


 


with

(max_memory=100000 kb,event_retention_mode=allow_single_event_loss,max_dispatch_latency=3 seconds,max_event_size=0 kb,memory_partition_mode=none,track_causality=on,startup_state=off)


go

i stumped @ point.  unfortunate xe events supposed allow me troubleshoot locks , timeouts having own bad case of locks/timeouts.

in activity monitor can see when delays occurring because wait time wait type "xe_dispatcher_wait" keeps increasing.  typically returns 0 when events delivered xe stream readers.  behavior of "xe_dispatcher_wait" same when database quiet (no events of nature requested).

once transactions/connections closed, can assured events delivered again.  appreciated.  i'm using sql 2012.  can't find references these xe event delays anywhere on google/stackoverflow.


david beavon

i use file target behaves according buffer- & dispatching configuration , seems more predictable.

actually tested , not phenomena more (sql 2012 sp2). remember though. maybe pre-sp1.

if server patched, must else in .net code/library , opening connect item repro might help


andreas wolter (blog | twitter)
mcsm: microsoft certified solutions master data platform, mcm, mvp
www.sarpedonqualitylab.com | www.sql-server-master-class.com



SQL Server  >  SQL Server Database Engine



Comments

Popular posts from this blog

Conditional formatting a graph vertical axis in SSRS 2012 charts

Register with Power BI failed

SQL server replication error Cannot find the dbo or user defined function........