突然 SQL 伺服器重新啟動,掛起的任務計數增加
我們正在嘗試了解 SQL 伺服器突然自行重啟的問題 -
它是一個 SQL server 2012 SP4 -GDR 應用,啟用了 40 個 CPU 的 HT,因此總共有 80 個邏輯處理器-
MAXDOP=8 , CTOP 5
從我們發現的錯誤日誌中
/**********************/
BEGIN 堆棧轉儲
非屈服調度程序 /**********************/
僅在重新啟動 SQL 時出現錯誤消息。也沒有像檢查那樣創建迷你轉儲。
是的,當時我們有很多查詢正在執行。前 3 名等待是:-
1.TranLogIO 2.CXPACKET 3.PAGELATCH SH
然而,我們也注意到
SOS WORKER
從系統健康 XE 收集的等待呼叫,我相信這不過是THREADPOOL
. 因此,我進一步分析了該系統執行狀況中的查詢處理詳細資訊,並發現在未產生調度程序錯誤時記錄了以下錯誤19:46
maxworkers
- 2944workers created
789oldest pending taskwait time
0 待定任務 419:51
maxworkers
- 2944workers created
982oldest pending taskwait time
256987 待定任務 165在 19:51,我們開始看到重啟發生了。
問題是如果上述計算中仍有近 2000 個工作人員可用,為什麼會有執行緒池等待。另外,當查詢有這麼多調度程序可供執行並完成對在 CXPACKETS 上等待的一堆查詢的請求時,為什麼那些待處理的任務計數為 165?
編輯:更新我的問題以等待 XE
SOS_MEMORY_TOPLEVELBLOCKALLOCATOR
當我閱讀上面的資訊時,請在這裡等待https://www.sqlskills.com/help/waits/sos_memory_toplevelblockallocator/
根據部落格,在 SP3 CU 中有一個修復,但使用 TF T8075:我目前使用的是 SP4-GDR 最新更新檔,是否仍需要應用 TF,儘管我沒有看到
Failed allocate pages: FAIL_PAGE_ALLOCATION 513
錯誤日誌中的任何消息不確定它是否有幫助-我看到總伺服器記憶體不時下降一個演出,然後匹配到目標伺服器記憶體,即 = 最大伺服器記憶體 (750GB)
大多數時候總=目標=最大伺服器記憶體。滴水只是演出而已,並不多
記憶體資訊 = 總記憶體:880 GB 最大記憶體:750GB 最小伺服器記憶體:130 GB 它是一個 2 節點 Windows 集群,沒有共享其他 SQL 實例。資源調控器未啟用
謝謝
我首先要說分析 MS 人員或了解它的人中轉儲的最佳人選。我只想從您發布的日誌中指出一些基礎知識
在 19:46 maxworkers- 2944 個工作人員創建了 789 個最舊的待處理任務等待時間 0 待處理任務 4 在 19:51 maxworkers- 2944 個工作人員創建了 982 個最舊的待處理任務等待時間 256987 待處理任務 165
請看那個
taskwait time 256987
和pending task 165
。這意味著調度程序已掛起,並且有 165 個任務正在等待它獲取調度程序並執行。在這種情況下,MS SQL Server 無法擺脫這個掛起的調度程序場景並等待了一段時間,但它再次決定最好重新啟動自己以擺脫這個掛起的調度程序場景,因此它重新啟動。現在,它掛起的原因超出了我的能力範圍,您發布的資訊無法說明。另請注意,為執行緒分配了一個調度程序,它應該在該調度程序上執行,這就是為什麼有這麼多執行緒在這個掛起的調度程序上等待。