Quantcast
Channel: SQL Server Replication forum
Viewing all articles
Browse latest Browse all 4054

XDESTSVERMGR

$
0
0

Hi,
I have a cluster with 3 nodes: one Primary and two Secondaries. Two nodes have the same configuration (cpu, memory, sql server configurations) and they are used as primary (SQL1) and the first secondary (SQL2). When SQL2 is primary the server responds very good, instead when SQL1 is primary the response times are 2-10 times greater. I checked the wait times. In top, on the first position is a wait type named XDESTSVERMGR. The query associated with this wait type is bellow. 
Could I have some documentation (link, pdf) or could you explain me what means: XDESTSVERMGR, which kind of operations are the cause of this wait type?

Thank you

--(@_msparam_0 nvarchar(4000))  
SELECT *  
INTO #tmpag_availability_groups  
FROM master.sys.availability_groups  
SELECT group_id,  
   replica_id,  
   replica_server_name, 
   create_date,  
   modify_date,  
   endpoint_url,  
   read_only_routing_url,  
   primary_role_allow_connections,  
   secondary_role_allow_connections,  
   availability_mode, 
   failover_mode,  
   session_timeout,  
   backup_priority,  
   owner_sid  
INTO #tmpar_availability_replicas  
FROM master.sys.availability_replicas 
/* BEGIN ACTIVE SECTION (inserted by Ignite) */  
SELECT group_id,  
   replica_id,  
   role, 
   operational_state, 
   recovery_health, 
   synchronization_health, 
   connected_state,  
   last_connect_error_number, 
   last_connect_error_description,  
   last_connect_error_timestamp  
INTO #tmpar_availability_replica_states  
FROM master.sys.dm_hadr_availability_replica_states 
/* END ACTIVE SECTION (inserted by Ignite) */  
SELECT replica_id, 
   join_state  
INTO #tmpar_availability_replica_cluster_states  
FROM master.sys.dm_hadr_availability_replica_cluster_states  
SELECT arrc.replica_server_name,  
   COUNT(cm.member_name) AS node_count,  
   SUM(cm.member_state) AS member_state_sum,  
   SUM(cm.number_of_quorum_votes) AS quorum_vote_sum  
INTO #tmpar_availability_replica_cluster_info  
FROM  
   ( 
   SELECT DISTINCT replica_server_name,  
      node_name  
   FROM master.sys.dm_hadr_availability_replica_cluster_nodes 
   ) AS arrc  
LEFT OUTER JOIN master.sys.dm_hadr_cluster_members AS cm  
ON UPPER(arrc.node_name) = UPPER(cm.member_name)  
GROUP BY arrc.replica_server_name  
SELECT *  
INTO #tmpar_ags  
FROM master.sys.dm_hadr_availability_group_states  
SELECT ar.group_id,  
   ar.replica_id,  
   ar.replica_server_name,  
   ar.availability_mode, ( 
   CASE  
      WHEN UPPER(ags.primary_replica) = UPPER(ar.replica_server_name) THEN 1  
      ELSE 0  
   END) as role,  
   ars.synchronization_health  
INTO #tmpar_availabilty_mode  
FROM #tmpar_availability_replicas as ar  
LEFT JOIN #tmpar_ags as ags  
ON ags.group_id = ar.group_id  
LEFT JOIN #tmpar_availability_replica_states as ars  
ON ar.group_id = ars.group_id  
AND ar.replica_id = ars.replica_id  
SELECT am1.replica_id,  
   am1.role, ( 
   CASE  
      WHEN (am1.synchronization_health is null) THEN 3  
      ELSE am1.synchronization_health  
   END) as sync_state, ( 
   CASE  
      WHEN (am1.availability_mode is NULL)  
      OR (am3.availability_mode is NULL) THEN null  
      WHEN (am1.role = 1)                THEN 1  
      WHEN (am1.availability_mode = 0  
      OR am3.availability_mode = 0) THEN 0  
      ELSE 1  
   END) as effective_availability_mode  
INTO #tmpar_replica_rollupstate  
FROM #tmpar_availabilty_mode as am1  
LEFT JOIN  
   ( 
   SELECT group_id,  
      role,  
      availability_mode  
   FROM #tmpar_availabilty_mode as am2  
   WHERE am2.role = 1 
   ) as am3  
ON am1.group_id = am3.group_id  
DROP table #tmpar_availabilty_mode  
DROP table #tmpar_ags  
SELECT AR.replica_server_name AS [Name],  
   ISNULL(AR.availability_mode, 2) AS [AvailabilityMode],  
   ISNULL(AR.backup_priority, -1) AS [BackupPriority],  
   ISNULL(AR.primary_role_allow_connections, 4) AS [ConnectionModeInPrimaryRole],  
   ISNULL(AR.secondary_role_allow_connections, 3) AS [ConnectionModeInSecondaryRole],  
   ISNULL(arstates.connected_state, 2) AS [ConnectionState],  
   ISNULL(AR.create_date, 0) AS [CreateDate],  
   ISNULL(AR.modify_date, 0) AS [DateLastModified],  
   ISNULL(AR.endpoint_url, N'') AS [EndpointUrl],  
   ISNULL(AR.failover_mode, 2) AS [FailoverMode],  
   ISNULL(arcs.join_state, 99) AS [JoinState],  
   ISNULL(arstates.last_connect_error_description, N'') AS [LastConnectErrorDescription],  
   ISNULL(arstates.last_connect_error_number,-1) AS [LastConnectErrorNumber],  
   ISNULL(arstates.last_connect_error_timestamp, 0) AS [LastConnectErrorTimestamp],   
   CASE  
      WHEN arci.member_state_sum IS NULL  
      OR arci.node_count = 0                       THEN 3  
      WHEN arci.member_state_sum = 0               THEN 0  
      WHEN arci.member_state_sum < arci.node_count THEN 2  
      WHEN arci.member_state_sum = arci.node_count THEN 1  
      ELSE 3  
   END AS [MemberState],  
   ISNULL(arstates.operational_state, 6) AS [OperationalState],  
   suser_sname(AR.owner_sid) AS [Owner],  
   ISNULL(arci.quorum_vote_sum, -1) AS [QuorumVoteCount],  
   ISNULL(AR.read_only_routing_url, '') AS [ReadonlyRoutingConnectionUrl],  
   ISNULL(arstates.role, 3) AS [Role],  
   ISNULL(arstates.recovery_health, 2) AS [RollupRecoveryState], ( 
   CASE  
      WHEN arrollupstates.sync_state = 3 THEN 3  
      WHEN (arrollupstates.effective_availability_mode = 1  
      OR arrollupstates.role = 1)        THEN arrollupstates.sync_state  
      WHEN arrollupstates.sync_state = 2 THEN 1  
      ELSE 0  
   END) AS [RollupSynchronizationState],  
   ISNULL(AR.session_timeout, -1) AS [SessionTimeout],  
   AR.replica_id AS [UniqueId]  
FROM #tmpag_availability_groups AS AG  
INNER JOIN #tmpar_availability_replicas AS AR  
ON (AR.replica_server_name IS NOT NULL)  
AND (AR.group_id=AG.group_id)  
LEFT OUTER JOIN #tmpar_availability_replica_states AS arstates  
ON AR.replica_id = arstates.replica_id  
LEFT OUTER JOIN #tmpar_availability_replica_cluster_states AS arcs  
ON AR.replica_id = arcs.replica_id  
LEFT OUTER JOIN #tmpar_availability_replica_cluster_info AS arci  
ON UPPER(AR.replica_server_name) = UPPER(arci.replica_server_name)  
LEFT OUTER JOIN #tmpar_replica_rollupstate AS arrollupstates  
ON AR.replica_id = arrollupstates.replica_id  
--WHERE (AG.name=@_msparam_0)  
ORDER BY [Name] ASC   
DROP TABLE #tmpar_availability_replicas  
DROP TABLE #tmpar_availability_replica_states  
DROP TABLE #tmpar_availability_replica_cluster_states  
DROP TABLE #tmpar_availability_replica_cluster_info  
DROP TABLE #tmpar_replica_rollupstate  
DROP table #tmpag_availability_groups 


Viewing all articles
Browse latest Browse all 4054

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>