查看造成 sqlservr.exe cpu 負載持續飆到9x%

確認是否block

Select * from sys.dm_exec_requests a CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) AS st
尋找 blocking_session_id 非0的並執行 kill 將其刪除即可恢復正常
需根據最後一個欄位分析造成此現象的原因,無法解決則要避免有機會執行到此指令


找出高負載指令

SELECT TOP 100 s.session_id, r.status, r.cpu_time, 
SUBSTRING(st.TEXT, (r.statement_start_offset / 2) + 1, 
((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(st.TEXT) 
ELSE r.statement_end_offset END - r.statement_start_offset) / 2) + 1) AS statement_text
FROM sys.dm_exec_connections c
JOIN sys.dm_exec_sessions s ON c.session_id= s.session_id
JOIN sys.dm_exec_requests r ON r.session_id = s.session_id
CROSS APPLY sys.Dm_exec_sql_text(r.sql_handle) AS st
where r.status='running'
ORDER BY r.cpu_time DESC

確認程式中有這段指令的部分進行優化

留言

熱門文章