Waittype:DBMIRROR_DBM_EVENT

你是否曾經看過DBMIRROR_DBM_EVENT?

如果查詢官方網站MSDN你會發現微軟官方並沒有太多的紀錄,只有說明這是內部使用。

https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-wait-stats-transact-sql?view=sql-server-2017


我遇到一個長 blocking chains的事件 是因為wait type DBMIRROR_DBM_EVENT 導致。除了造成很長的 blocking chains 外,也導致worker threads 全滿,因此導致另外一個事件Application無法順利獲得Connection連接SQL Server。

當下我立即用 SQL Dedicated Administrative Connection (DAC) 查看SQL Server的狀態,發現全部的Session wait type都是 DBMIRROR_DBM_EVENT ,立即切斷Mirroring,接著全部服務恢復正常。

環境為SQL SERVER 2008R2 高效能模式 Mirror Timeout 設定20s

在非官方文件提到 DBMIRROR_DBM_EVENT 代表Principle正在等待Mirroing Server Harden LSN,這也代表此時有部分transaction 無法Commit 。因此可以判斷問題可能出在Mirroring上。


為了調查此事件,我總共做了以下幾個嘗試

  1. 檢查Blocking Chain,但是發現 Wait type 都和DBMIRROR_DBM_EVENT 相關
  2. 檢查 SQL Server Error Logs , windows event logs >>無異常
  3. 檢查Log backup的大小>>無異常

針對該次事件其實我沒有找到真正的Root Cause但是Root Cause可能有幾個方向

  1. 某些硬體問題,例如Mirroing Server 硬碟有問題,網路或線路有問題
  2. SQL Server Bug


此次事件我有幾個可以改善的部分

  1. 沒有檢查Default Trace file
  2. 平常沒有收集數據 log_flush_rate, send_queue_size, send_rate, redo_queue_size redo_rate
  3. 沒有監控Principle 和Mirroring對接的實體線

https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2005/administrator/cc917681(v=technet.10)

http://www.cnblogs.com/nzperfect/archive/2012/03/21/2409975.html

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s