web-dev-qa-db-ja.com

SQL ServerのCPUスパイク-おそらくクエリに関連しない-推奨される指標

これらのCPUの「鈍化したスパイク」の原因を発見するために監視できる指標の提案を探しています。
enter image description here いくつかの既知の情報:

  • sqlserver.exeは、CPU(2008 R2 Standardエディション)を消費するプロセスとして確認されています。
  • それは本質的に非常に断続的です。特定のクエリに固定することはできません。プロファイラートレースは、相関関係を示していないようです。実際、スパイク中にすべてのクエリが待機しているように見えますが、興味深いことに、現在処理されているメッセージのバックログを持つService Brokerキューがあることと相関関係があるようです。
  • Service Brokerは、CLR関数を多用して、非同期のデータベース内ストアドプロシージャの実行にのみ使用されています。

「追いついている」何らかのバックグラウンドスレッドまたはプロセスを疑っていますが、まだそれを固定することはできません。

4
Andy Rowlings

最初に確認することをお勧めするのは、sp_configureを使用した「並列処理の最大度合い」です。これはデフォルトで0に設定されているため、この設定が変更されていない場合、並列クエリは完了するまで、ボックス上のすべてのCPU(最大64スレッド)を消費します。これは、私がキャリアで認めようとしているよりも多くのシステムで発生することを確認しており、(CPUの数が多い)大型サーバーではさらに苛立たしい傾向があります。これがデフォルトの0に設定されている場合、これが何であるかに関するMSからの推奨事項は、次の場所にあります。 http://support.Microsoft.com/kb/2806535

CPUが非常に少ない(1や2など)小さなサーバーの場合、自動更新統計が起動するのと同じくらい簡単なことかもしれませんが、それはまれであると報告されていますが、それでもまれに発生します。ただし、プロファイラートレースを介して、それが原因であるかどうかを確認する必要があります。

2
John Eisbrener