我在特定時間面臨高CPU使用率。 4個處理器,16GB RAM,29個數據庫 總數據文件大小60 GB。我經常得到高線程數太高。 任何人都可以幫助我嗎?sqlserver2012上的CPU利用率很高
1
A
回答
3
沒有直接的解決方案。您將不得不查找查詢,這會導致高CPU和微調它們。
下面DMV,賦予您正在消耗更多的CPU
SELECT TOP 50 qs.creation_time, qs.execution_count, qs.total_worker_time as total_cpu_time, qs.max_worker_time as max_cpu_time,
qs.total_elapsed_time, qs.max_elapsed_time, qs.total_logical_reads, qs.max_logical_reads, qs.total_physical_reads, qs.max_physical_reads,t.[text], qp.query_plan, t.dbid, t.objectid, t.encrypted, qs.plan_handle, qs.plan_generation_num FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS t CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS qp
ORDER BY qs.total_worker_time DESC
疑問,你都這麼說,線程數是high.It 可能是由於並行的well..so,你可能必須找出並行運行的查詢。
找到它們後,找出它們並行執行的原因。在大多數情況下,這可能是由於缺少索引。
這個查詢將幫助你在這:Find Query Plans That May Utilize Parallelism
SELECT
p.*,
q.*,
cp.plan_handle
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) p
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) q
WHERE cp.cacheobjtype = 'Compiled Plan'
AND p.query_plan.value('declare namespace p="http://schemas.microsoft.com/sqlserver/2004/07/showplan";max(//p:RelOp/@Parallel)', 'float') > 0
+1
第二個查詢非常有用 –
0
使用下面的語句來檢查哪些數據庫所使用的大部分CPU:
WITH DB_CPU_Stats
AS
(SELECT DatabaseID, DB_Name(DatabaseID) AS [Database Name], SUM(total_worker_time) AS [CPU_Time_Ms]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY (SELECT CONVERT(int, value) AS [DatabaseID]
FROM sys.dm_exec_plan_attributes(qs.plan_handle)
WHERE attribute = N'dbid') AS F_DB
GROUP BY DatabaseID)
SELECT ROW_NUMBER() OVER(ORDER BY [CPU_Time_Ms] DESC) AS [CPU Rank],
[Database Name], [CPU_Time_Ms] AS [CPU Time (ms)],
CAST([CPU_Time_Ms] * 1.0/SUM([CPU_Time_Ms]) OVER() * 100.0 AS DECIMAL(5,2)) AS [CPU Percent]
FROM DB_CPU_Stats
WHERE DatabaseID <> 32767 -- ResourceDB
ORDER BY [CPU Rank] OPTION (RECOMPILE);
或者這種說法找到其SQL語句中使用的大多數CPU
SELECT TOP 50
[Avg. MultiCore/CPU time(sec)] = qs.total_worker_time/1000000/qs.execution_count,
[Total MultiCore/CPU time(sec)] = qs.total_worker_time/1000000,
[Avg. Elapsed Time(sec)] = qs.total_elapsed_time/1000000/qs.execution_count,
[Total Elapsed Time(sec)] = qs.total_elapsed_time/1000000,
qs.execution_count,
[Avg. I/O] = (total_logical_reads + total_logical_writes)/qs.execution_count,
[Total I/O] = total_logical_reads + total_logical_writes,
Query = SUBSTRING(qt.[text], (qs.statement_start_offset/2) + 1,
(
(
CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.[text])
ELSE qs.statement_end_offset
END - qs.statement_start_offset
)/2
) + 1
),
Batch = qt.[text],
[DB] = DB_NAME(qt.[dbid]),
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
where qs.execution_count > 5 --more than 5 occurences
ORDER BY [Total MultiCore/CPU time(sec)] DESC
相關問題
- 1. WSO2 ESB中的CPU利用率很高
- 2. CPU利用率高
- 3. WP7,高CPU利用率
- 4. CPU利用率高 - VB.NET
- 5. UNIX上的CPU利用率
- 6. 使用MQTT deamon時CPU利用率高!
- 7. Django App的CPU使用率很高
- 8. System.net.Socket.beginReceive()中的CPU使用率很高()
- 9. Java Web App的CPU佔用率很高
- 10. Java線程 - 高cpu利用率?
- 11. 線程長,CPU利用率高
- 12. oracle組期間CPU利用率高
- 13. IE9:我的網站上的CPU利用率始終很低
- 14. CPU利用率6
- 15. Fedora Gnome CPU突然很高使用率
- 16. AWS RDS上的CPU利用率過高 - Postgres
- 17. NPAPI插件在Mac上有很高的CPU使用率safari
- 18. Mysql副本服務器的CPU利用率在EC2中變得很高
- 19. AWS RDS CPU利用率100%
- 20. CPU利用率和線程
- 21. FFMPEG和CPU利用率
- 22. RDS實例CPU利用率
- 23. JMeter CPU利用率報告
- 24. Spark CPU利用率監測
- 25. CPU利用率達到100%
- 26. EC2實例CPU利用率
- 27. CPU使用率和CPU利用率之間的區別?
- 28. 節點應用程序的高CPU利用率應用程序
- 29. 使用f1-micro實例的高CPU利用率
- 30. SOLR在亞馬遜linux的高CPU利用率
到目前爲止做了什麼?你有沒有看過等待?這可能是一個很好的開始https://mssqlwiki.com/2012/10/04/troubleshooting-sql-server-high-cpu-usage/ –
右鍵單擊一個ny數據庫並查看可用的各種報告。有些對於識別「沉重」的觀點和程序非常有用。 –