Hyper-Vのダイナミックメモリ機能を使うとSQLServerが高負荷状態になり応答しなくなる

Windows Server 2008 R2 SP1 でHyper-Vのダイナミックメモリ機能を利用した仮想マシン上でSQL Serverを稼働させるとSQL Server のCPU負荷が90%を超え高負荷状態になりサーバーが(Faildown)応答しなくなることがあります。

原因としては、SQLServerのメモリ使用量が(急激に)増えた時にサーバーへのメモリの割り当てが追い付かずに、仮想マシンのメモリ残量が減りSQLサーバーがメモリ不足エラーを発生させるためと考えられます。

対策方法

対策方法としては、以下が挙げられます。

  • ダイナミックメモリ機能を使わず、静的メモリ割り当てにする
  • メモリバッファを大きくし、メモリ割り当て優先度を上げる

が、メモリバッファを大きくして試してみた場合でもエラーが発生するケースがあるので、データベースサーバーは静的メモリ割り当てにするのが確実かと思われます。

メモリバッファを20%から100%にし、メモリ割り当て優先度を上げる設定例

Hyper-Vのダイナミックメモリ機能を使うとSQLServerが高負荷状態になり応答しなくなる:画像1

発生するエラーの一例 (Windows アプリケーションログ)

Hyper-Vのダイナミックメモリ機能を使うとSQLServerが高負荷状態になり応答しなくなる:画像2
Hyper-Vのダイナミックメモリ機能を使うとSQLServerが高負荷状態になり応答しなくなる:画像3
Hyper-Vのダイナミックメモリ機能を使うとSQLServerが高負荷状態になり応答しなくなる:画像4

AuthorPortraitAlt
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
作成日: 2011-02-19
Copyright © 1995–2025 iPentec all rights reserverd.