SQL Server CPU 峰值 - 可能与查询无关 - 建议指标

And*_*ngs 5 performance monitoring sql-server service-broker

我正在寻找有关我可以监控的指标的建议,以发现导致这些 cpu“钝化尖峰”的原因。
在此输入图像描述 一些已知信息:

  • 确认sqlserver.exe是消耗CPU的进程(2008 R2标准版)。
  • 它本质上是间歇性的。无法将其固定到特定查询。探查器跟踪似乎没有显示任何相关性。事实上,看起来似乎所有查询都在高峰期间等待,但有趣的是,这似乎与服务代理队列和当前正在处理的积压消息存在相关性。
  • 服务代理纯粹用于异步数据库内存储过程执行,并大量使用 CLR 函数。

我怀疑某种后台线程或进程正在“追赶”,但还无法确定它。

Joh*_*ner 3

我建议您检查的第一件事是通过 sp_configure 检查您的“最大并行度”。默认情况下,此设置为 0,因此如果此设置未更改,并行查询将消耗系统上的所有 CPU(最多 64 个线程),直到完成为止。在我的职业生涯中,我见过这种情况发生在比我愿意承认的更多系统上,并且在较大的服务器(具有更多 CPU 数量)上往往更令人沮丧。如果将其设置为默认值 0,则可以在此处找到 MS 的建议: http: //support.microsoft.com/kb/2806535

如果它是一个较小的服务器,CPU 很少(例如 1 或 2 个),那么它可能就像自动更新统计数据一样微不足道,尽管据报道这种情况很少见……但这种情况仍然很少发生。不过,您必须通过分析器跟踪来检查这是否是罪魁祸首。