OLAP / OLTPのワークロードが混在するデータベースがあります。クエリは非常にアドホックであり、中間層アプリケーションサーバーで動的に作成されます。サーバーを起動すると、パフォーマンスは許容範囲内ですが、使用可能なすべてのメモリ(30GB)がなくなるまで、メモリ消費量はどんどん増えます。その後、システムはますます遅くなります。
のようなコマンドDbcc freeproccache
は効果がありません。
トランザクションは多くありませんselect * from sys.dm_tran_session_transactions
(システムが正常な場合を超えない)。このリストが空の場合もあります。
の最初の結果dbcc memorystatus
は
VM Reserved 42136628
VM Committed 1487176
Locked Pages Allocated 24994048
Reserved Memory 1024
Reserved Memory In Use 0
SQL Serverを再起動すると、しばらくの間問題が解決します。
- この動作の原因は何ですか?どうすればそれを回避できますか?
- 原因の実際の解決策が難しすぎる場合、DBMSを完全に再起動せずにSQL Serverにすべてのメモリを実際に解放させるコマンドはありますか?
サーバーは専用のハードウェア(VMではなく)で実行されています。スケジュールされたジョブがいくつかありましたが、変更なしでしばらく無効にしました。同じサーバー上で実行されている他の中間層アプリケーションがありますが、それらは2GB以下のメモリ、ごくわずかなCPU、ほとんどI / Oを使用しません。そのようなアプリケーションはすべて変更せずに再起動しました。