web-dev-qa-db-ja.com

SQL High CPUの仮想化

これは大幅な見直しが必要なクライアント環境なので、私がやろうとしているのは出血を遅らせることだけです。

状況

CPUがクラッシュし、多くの場合80%以上の使用率

VMWARE 5.5、Windows Server 2008r2、SQL Server 2012

6コアの1 vCPU(ここでは赤いフラグ)

70GBのRAM

16の個別のインスタンス、CPU使用のほとんどを駆動するインスタンスには80のユーザーデータベースがあります

ほとんどすべてのインスタンスMAXDOP 0、並列処理のすべてのコストしきい値は5

現時点では停止はオプションではないため、再起動やvCPUの変更はありませんが、高CPUである出血を遅くする必要があります。

これは、DBが80のインスタンスでCPUが占有している現在のトップ10の現在の待機のサンプルです。

╔══════════════════════╦══════════════════╦════════════╦═════════════╗
║      wait_type       ║ Wait Time (Secs) ║ # of Waits ║ Avg ms/Wait ║
╠══════════════════════╬══════════════════╬════════════╬═════════════╣
║ WRITELOG             ║ 9.8              ║ 5563       ║ 1.8         ║
║ PAGELATCH_SH         ║ 7                ║ 21742      ║ 0.3         ║
║ SOS_SCHEDULER_YIELD  ║ 6.5              ║ 8891       ║ 0.7         ║
║ PAGELATCH_EX         ║ 5.3              ║ 20106      ║ 0.3         ║
║ CXPACKET             ║ 4.2              ║ 174        ║ 24.2        ║
║ LATCH_EX             ║ 2.7              ║ 1287       ║ 2.1         ║
║ LCK_M_S              ║ 2.2              ║ 123        ║ 18.1        ║
║ LCK_M_U              ║ 1.7              ║ 385        ║ 4.5         ║
║ PAGEIOLATCH_SH       ║ 0.9              ║ 972        ║ 0.9         ║
║ ASYNC_IO_COMPLETION  ║ 0.5              ║ 3          ║ 150.3       ║
╚══════════════════════╩══════════════════╩════════════╩═════════════╝

私の考えでは、MAXDOPを3に設定し、すべてのインスタンスのコストしきい値を25に設定しました。

5
pshore73

すぐに間違って見えるもの

  1. 多くのインスタンスへの道
  2. 十分なvCPU
  3. vNUMAはおそらくNUMAと一致しません
  4. 不足しているインデックスがたくさんあると思います
  5. 1または2のMAXDOP
  6. コストのしきい値は50
  7. アドホックワークロードの最適化=オン(おそらくオフ)

ご質問

  1. 待機はどのように見えますか?
  2. すべてのメモリ構成のセットアップは何ですか?

これを修正すると停止します。おそらくそれらのいくつか。

9
mrdenny

上記に同意します。また、CPUにヒットするクエリをチェックし、クエリのチューニングを実装できるかどうか、または少なくともいくつかの計画ガイドを決定します。ただし、全体として、構成は持続可能ではありません。

2
Brian Custer

更新するために、負荷の一部を別のサーバーに移動してから、環境を完全に再構築します。

お時間とご回答ありがとうございます。

1
pshore73