2012-03-08 124 views
0

我们在Windows Server 2008 r2 ent版本& SQL Server 2008 R2版本中运行照片共享网站。服务器配置是具有48GB RAM的Xeon 5620 & 4 x 450GB 15k Scsi Hdd's。SQL Server 2008 r2高CPU使用率

根据上个月的平均数据,我们有关于DB上的最少50和最多500个活动连接。现在平均数也是一样的。 1个月前,我们的sql server cpu使用率不到1%,但现在最少使用25%,最多使用100%。我们在过去8天面临的这个问题。从最近8天开始,我们的CPU使用率总是在我们启动SQL服务&时增加,当我们停止它只是正常的。我请求你可以任何人告诉我如何解决这个问题。

+0

2008 R2 - 什么是SQL Server的忙?使用分析仪表板来找出cpu实际在做什么。可能是一些卡住的数据库检查/修复,只需要很长时间,并重新启动服务器重置它启动? – TomTom 2012-03-08 10:02:58

+0

即使我们重新启动数据库服务器,问题也是一样的。当我们停止SQL服务器服务时,只有cpu使用情况是正常的。 – Bangar 2012-03-08 10:46:04

+0

你读过我说过的吗?当然,当它卡住了数据库tc。并且您重新启动它将会再次尝试。你有没有考虑过查看sql服务器日志以了解服务器启动后会发生什么? – TomTom 2012-03-08 11:53:09

回答

1

与TomTom一致,你必须深入到底部。好的猜测是缺乏/不准确的索引,它通常会导致高CPU数量的会话。 检查您的DMV的信息(不过要小心,他们刚刚从SQL引擎提示,应该由受过培训的专业人员进行分析):

SELECT 
    migs.avg_total_user_cost * (migs.avg_user_impact/100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure, 
    'CREATE INDEX [missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle) 
    + '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']' 
    + ' ON ' + mid.statement 
    + ' (' + ISNULL (mid.equality_columns,'') 
    + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END 
    + ISNULL (mid.inequality_columns, '') 
    + ')' 
    + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement, 
    migs.*, mid.database_id, mid.[object_id] 
FROM sys.dm_db_missing_index_groups mig 
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle 
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle 
WHERE migs.avg_total_user_cost * (migs.avg_user_impact/100.0) * (migs.user_seeks + migs.user_scans) > 10 
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC 
+0

谢谢拉菲尔和汤姆根据你的建议,我们做了一些研究,找到了一些临时解决方案,并在永久解决方案上工作。非常感谢你们两位。 – Bangar 2012-03-09 17:58:09