web-dev-qa-db-ja.com

VMWareESXi内のSQL2008サーバーの最適化

私は通常、MSSQLサーバーを専用サーバーで実行していますが、VMWare ESXi4ホスト内でSQLServerを実行しているクライアントを採用しており、率直に言って、それはがらくたのように実行されています。

問題となっているのはデータベース自体ではないことを確認しました。同じデータベースをVMWareゲストよりもスペックの低い専用サーバーにデプロイしたところ、少なくとも5倍高速に実行されました。

サーバーは次のとおりです。

Dual Quad Core Xeon 2Ghz (I don't know the exact model)
24Gb RAM
4x 300Gb SAS (RAID 10)
ESXi 4

ホストは次のとおりです。

4x vCPUs
3Gb RAM
80Gb disk space
Server 2008 Standard
SQL Server 2008 Workgroup

ホスト上の他のVMはトラフィックが非常に少ないです。 2番目のDC(ほとんど未使用)、トラフィックの少ないWebサーバーとボリュームの少ないターミナルサーバー(常に最大5人のユーザー)およびその他の数人のゲスト。

ずっと前に、WindowsとSQLサーバーでページング設定をすべて設定して最適化することについての記事を読みましたが、それ以上見つかりません:(

SQLのパフォーマンスを向上させるために誰かが提供できるヒントやコツはありますか?

4
Mark Henderson

わかりました。ここにいくつかのヒントがありますが、パフォーマンスに適した順序は特にありません。

  • VMがモデル7仮想ハードウェアで実行されていることを確認します(VM要約)に記載されています)
  • すべてのVMディスクが薄いのではなく太い)であることを確認してください
  • バージョン4アップデート1にアップグレードする
  • すべてのVMに最新のvmtoolsがインストールされていることを確認してください
  • W2K8 VMの場合、「LSISAS」ディスクコントローラーとvmxnet3NICを使用します
  • OSでスワッピングがオンになっていることを確認してください
  • スクリーンセーバーを無効にする
  • ビデオフレームバッファを4MB以下に設定します
  • フロッピー、シリアル、パラレルなど、すべてのVMから不要な仮想ハードウェアをすべて削除します。
  • Zypherが言うように、ESXは割り当てられたvCPUのallが使用可能になるまでVM any vCPU time)を与えません-からの数を減らしてみてください4〜3または2(VM 3、5、または7のvCPU、奇妙に感じますが、問題なく動作します)を与えることを恐れないでください)、他のVMも調べて、vCPUを減らします彼らがそれらを必要としない場合-このマシンは実際にはそれほど多くのコアを持っていません
  • BIOSでハードウェア仮想化が有効になっており、すべての電源管理オプションがパフォーマンスに合わせて調整されていることを確認します
  • VMの「シェア」を確認し、重要性と現在の動作に基づいてさまざまなシェアの値/優先度を増減することを検討してください。また、予約オプションも真剣に検討してください。これらのオプションは、競合するボックスに大きな違いをもたらす可能性があります。
  • 次に、SQL VMのパフォーマンスデータ、特に使用可能なメモリ、%RDY、ディスクキューの長さ/待機を明らかに確認します。
  • アレイにディスクを追加するか、このVMに専用のvmdk /データストア/ディスクを提供することを検討してください

よろしければ、さらに追加します。幸運を祈ります。

3
Chopper3

vSphereリモートCLI (ドライバーとツール->自動化ツールとSDKに移動)を取得します

セットアップが完了したら、ボックスにログインし、esx topを使用して、ボトルネックがどこにあるかを確認します( 有益なリンク

4つのvCPUを実行しているので、esxtopのプロセッサ画面の%RDY列に注意してください。これは、マシンが一度に4つのCPUにアクセスするのを待機している時間です。 2〜5を超えるものと話すVMWare SEによっては、悪い結果になります。

また、VICの[パフォーマンス]タブの下にあるグラフを見て、何が起こっているかを確認できます。特にメモリグラフを詳しく見て、メモリの多いバルーンに注意してください。

5
Zypher

おそらく、仮想化は、すでにパフォーマンスの低いデータベースの兆候にすぎません。データベースのパフォーマンスは仮想化時に常に特に厄介ですが、トラフィックがそれほど多くない場合は、ホットデータをRAMに保持することでDBが合理的に実行できない理由はありません。一般的なSQLパフォーマンスをチェックし、3GBのRAM割り当てられている(もっと与えることができますか?))を使用しているかどうかを確認します。書き換えたり、追加のインデックスを使用したりすることでメリットが得られる可能性のある不正なクエリなど。

1
Goyuix

他の人が言っているように、合計8コアしかないボックス上の4vCPUはたくさんあります。あなたはおそらく多くのプロセッサスケジューリングの競合にぶつかっています。私はそれを1つか2つに落とし、パフォーマンスが向上するかどうかを確認し、そこから進みます。

0
MDMarra