約40の異なるデータベース(それぞれ約1〜5 GB)を備えたSQLサーバーがあります。サーバーは、32ギガバイトのRAMを搭載した8コア2.3G CPUです。 27GigはSQL Serverに固定されています。 CPUの使用率は常にほぼ100%に近く、メモリ消費は約95%です。ここでの問題は、CPUが常に100%に近く、理由を理解しようとしていることです。
- this スクリプトを使用して、どのデータベースが高いCPUに寄与するかを確認するために初期チェックを実行しましたが、実際にCPUを消費しているものを詳細に実証することはできませんでした。 (すべてのDBからの)上位クエリの完了には、約4秒しかかかりません。 IOもボトルネックではありません。
ここで記憶が犯人でしょうか?メモリの分割を確認しましたが、オブジェクトキャッシュはSQL Serverに割り当てられたメモリ(27G)の約80%を占めています。多くのSPが関係しているのであれば、それが正常であることを願っています。プロファイラを実行すると、多くの再コンパイルが表示されますが、主に「一時テーブルの変更」、「遅延コンパイル」などが原因であり、これらの再コンパイルがメモリ不足によりキャッシュからスローされる計画の結果かどうかは不明です
考えを感謝します。
SSMSでいくつかのレポートを確認できます。
インスタンス名/レポート/標準/トップセッションを右クリックします
トップCPU消費セッションを確認できます。これにより、どのSQLプロセスがリソースを使用しているかが明らかになります。周りを見ると、CPUに関連する他のレポートがいくつかあります。もう少しDMVを指すつもりでしたが、もしあなたがすでにそれを調べていたら、それをスキップします。
sp_BlitzCache を使用して、CPUを最も消費しているクエリを見つけることができます。また、IOおよびその他のものでソートすることもできます。これは、再起動の間に蓄積されるDMV情報を使用しています。
この記事 は有望に見えます。
いくつか stackoverflow Ozar氏からの良さ。
this sqlserverstudymaterialに関する記事;
「%Privileged time」は100%に基づいているわけではないことに注意してください。sqlserver.exeに200が表示され、システムに8 CPUがある場合、sqlserver.exeによって消費されるCPUは800のうち200(のみ) 25%)。
「%Privileged Time」の値が30%を超える場合は、通常、ドライバーまたはウイルス対策ソフトウェアの障害が原因です。このような状況では、BIOSおよびフィルタードライブが最新であることを確認してから、ウイルス対策ソフトウェアを一時的に無効にして、変更を確認してください。
「%User Time」が高い場合は、SQL Serverを消費しているものがあります。 SQL Serverで実行されているプロセスのCPU使用率が高くなる原因となる既知のパターンがいくつかあります。