Hyper-Vのダイナミックメモリ機能を使うとSQLServerが高負荷状態になり応答しなくなる
Windows Server 2008 R2 SP1 でHyper-Vのダイナミックメモリ機能を利用した仮想マシン上でSQL Serverを稼働させるとSQL Server のCPU負荷が90%を超え高負荷状態になりサーバーが(Faildown)応答しなくなることがあります。
原因としては、SQLServerのメモリ使用量が(急激に)増えた時にサーバーへのメモリの割り当てが追い付かずに、仮想マシンのメモリ残量が減りSQLサーバーがメモリ不足エラーを発生させるためと考えられます。
対策方法
対策方法としては、以下が挙げられます。
- ダイナミックメモリ機能を使わず、静的メモリ割り当てにする
- メモリバッファを大きくし、メモリ割り当て優先度を上げる
が、メモリバッファを大きくして試してみた場合でもエラーが発生するケースがあるので、データベースサーバーは静的メモリ割り当てにするのが確実かと思われます。
メモリバッファを20%から100%にし、メモリ割り当て優先度を上げる設定例

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



著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。