SQL ServerによるRAMの過剰使用を制御する方法は?


13

私が使用しているデータベースサーバーは、6つの異なるSQL Serverインスタンスを実行しています。48 GBのRAMがあります。そしてそのうちの1つは10 GBを超えるRAMを消費しており、現在の合計消費量は20 GBです。RAMの消費量は継続的に増加しています。数日前に40 GBを超えるRAMを使用し、サーバーの応答が非常に遅くなりました。アプリケーションは、データを保存するときにクラッシュする問題を示しています。

そこで、SQL Serverサービスを再起動しました。

サービスが再起動されるとすぐに、使用量は4 GBになりましたが、現在は増加しています。そして、4日か5日で最大40 GBになり、サーバーが遅くなるのではないかと心配しています。

サービスの再起動は、私が推測する良い選択肢ではありません。

また、さまざまなソースから、SQL Serverの最大メモリ使用量を設定できることもわかりました。これが役立つかどうかはよくわかりません。サーバーが運用データベースを使用しているため、これをテストすることはできません。SQLServerの設定を変更しているときにサービスが停止するとリスクが発生します。

誰でもこの問題を解決できますか?


1
デフォルトでは、SQLはパフォーマンスを最大化するためにできるだけ多くのRAMを使用します。これは良いことです。つまり、一般的なクエリと結果をキャッシュしてアプリケーションを高速化します。OSがページングが発生する可能性があると報告する制限までのRAMのみを使用します。この動作をオーバーライドできます。このMSドキュメントを参照してください:SQL Serverの構成オプションを使用してメモリ使用量を調整する方法これも役立つ場合があります:適切なSQL Server構成設定を決定する方法

4
それは問題ではありません-SQL Serverの設計されたデフォルトの動作です!! そして、はい-SQL Serverプロセスを再起動するのは恐ろしいアイデアです。これが、SQL Serverマシンを常に専用サーバーにする必要がある理由です。SQLServer以外は何もしません。
marc_s

よし、分った。そのように設計されています。ただし、SQLサーバーがメモリの多くを使用すると、サーバーの速度が低下し、レポートがタイムアウトします。だから私はSQLサーバーが限られたメモリを使用するのを防ぎたい。

4
実際、SQL Serverができるだけ多くのメモリを使用している場合、レポートの配信が困難になる可能性が低くなると思います。メモリの付与やその他の問題による問題が発生するのは、SQL Serverを人為的に制約する(または、リソースを奪い合う1つのボックスに多くのインスタンスを配置する)場合です。
アーロンバートランド

しかし、SQLサーバーサービスを再起動した後、なぜレポートが突然表示されるようになったのだろうか。レポートが表示されなかったために、あまりにも多くの顧客がアプリケーションを使用していた可能性がありますか?

回答:


14

それは仕様です。SQL Serverは使用可能なすべてのメモリを使用することになっています。メモリに格納するデータが増えるため、ディスクに戻って同じメモリを何度も取得する必要がなくなるためです。

単一のSQL Serverインスタンスが使用するメモリ量を制限する必要がある場合は、オブジェクトエクスプローラー内のインスタンス名を右クリックしてプロパティを選択することにより、SQL Server Management Studioでこれを行うことができます。次に、[メモリ]タブを選択し、SQL Serverが使用できるメモリの最大量を設定します。これで、SQL Serverのすべての側面がそのメモリ量に制限されるわけではありません。これは、バッファプールと実行プランキャッシュのみを制御します。CLR、フルテキスト、SQL Server exeファイルで使用される実際のメモリ、SQLエージェント、拡張ストアドプロシージャなどは、この設定によって制御されません。ただし、これらの他のものは通常、それほど多くのメモリを必要とせず、メモリの大部分を必要とするのはバッファプールと実行プランキャッシュです。

1つのインスタンスにこの設定を設定する場合、すべてのインスタンスに設定して、お互いに踏まないようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.