2012-05-24 50 views
-1

我正在使用SQL Server 2008 R2。在开发环境中,我可以看到CPU处于几分钟的负载下(大约55%-80%,而正常情况下是1-2%。是的 - 在我的开发环境中,正常负载几乎没有!)。在此CPU压力时间内,自动化测试有时会出现超时错误。意外的CPU峰值

刚在活动监视器中遇到超时。看起来是这样的:在这些压力的时刻 enter image description here

Tipicaly它看起来像这样: enter image description here

问题是,我无法理解为什么它正在发生!持续执行自动化测试,但他们没有承担繁重的工作量。在性能测试过程中,系统运行良好,如果速度变慢,总会有很好的解释。

我试着通过

  • 运行跟踪来解决问题,但这些CPU高峰期间,存在“没什么特别的”事情。没有昂贵的查询。
  • 使用SQL活动监视器 - 一切似乎正常,除了CPU(就像1-2等待任务,低I/O,~5请求/秒)。最近昂贵的查询并不昂贵。
  • 查询数据。使用着名的sp_WhoIsActive和sys.dm_exec_requests。据我understand-没什么不寻常的再次..

关于我的服务器

  • 有数据库数量少,我知道他们好。
  • 使用Service Broker。
  • 痕迹正在大部分时间运行。

我怀疑是一些后台进程出现问题。但我真的没有得到它..你可以请提供一些提示/想法如何解决这个问题?

+0

也许它可能是您的数据库文件偶尔会踢的自动增长? –

+0

@MikaelEriksson数据库增长缓慢,并且有足够的空间。数据库是在简单的恢复模式。 –

+0

是的,但分配过程是在一个特定的时间点完成的。如果您的数据库每次达到极限时都设置为增长10Gb,则可能导致问题。 – Diego

回答

0

它可能是一些内部的SQL Server作业。像一个大的索引重建。

等待秒杀和run sp_who2 'active'。检查列CPU时间。

其实,你如何100%确定SQL是负责任的?难道这不是一个SO问题吗?

+0

SQL Server计算机上的资源监视器显示,使用CPU的计算机是“sqlservr.exe”。这台机器上没有计划的索引重建。实际上,只有每小时运行一次的计划备份作业,但CPU峰值不能因为这些而发生。 –

+0

oh ok,所以试试sp_who2 – Diego

+0

有一堆系统进程与最后批处理时间05/12 03:17:45(它看起来更像SQL Server启动时间)和3个用户进程 - 这三个三个都不是CPU昂贵。 –

0

我遇到了同样的问题,并且向微软提出过案子。

微软的家伙告诉从SQL DB端没有问题,如果CPU是尖刺的。最后问题由Microsoft解决,实际上问题是在IIS上,而不是在SQL Server上。

每隔29天IIS需要重新启动,以便您在应用程序上获得更好的性能。