web-dev-qa-db-ja.com

メモリ不足のトラブルシューティング-SQL Serverのページアウトを回避する方法

アラートが発生し、

sQL Serverプロセスメモリのかなりの部分がページアウトされました

最小サーバーメモリも1740に増やす必要がありますか?

Microsoft SQL Server 2005-9.00.5000.00(X64)Dec 10 2010 2010:38:40 Copyright(c)1988-2005 Microsoft Corporation Standard Edition(64-bit)on Windows NT 5.2(Build 3790:Service Pack 2)

enter image description here

他のアプリケーションがあり、そのサーバーで実行されているアプリケーションを監視することもできます。

下の画像を見ると、これらのアプリケーションを垣間見ることができます。

enter image description here

12:15:37にアラートを受け取りましたPM wrsleic1のデフォルトのインスタンスで、「SQL Serverプロセスメモリのかなりの部分がページアウトされました。」

アラートを調査したところ、SQL Serverが昨年この状況を2015年4月13日に報告していることがわかりました。現在、SQL Serverには最大メモリ1.7 GBが割り当てられていますが、サーバーには4 GBの物理メモリが利用できます(動的にサイズが変更されたページファイルは現在5 GBです)。

警告の時点で、SQL Serverは最大メモリを予約していましたが、キャッシュされたデータを積極的に使用しているとは限りませんでした。したがって、サーバーが外部プロセスからのメモリプレッシャーを検出した場合(IISがこれを遡及的に判断できない場合があります)、SQL Serverは要件に対応するためにワーキングセットをトリミングし、現在約900 MBを使用しています。

OSはメモリ管理を担当し、SQL Serverはアラート時と同様にメモリ解放要求に応答するように設計されています。したがって、このインスタンスでホストされているデータベースを使用するアプリケーションのパフォーマンスに認識できる影響がなかった場合、これ以上のアクションはお勧めしません。

メモリ内のページのロック

メモリ内のロックページは、どのSQLサーバーアカウントでも有効になっていません。

enter image description here

これを変更する予定でしたが、次の理由により、このサーバーをそのままにすることにしました。

1)それは標準版のsqlサーバー2005 SP2で実行されており、 このページに表示されています

SQL Server 2005 SP3累積更新プログラムパッケージ4およびSQL Server 2008 SP1累積更新パッケージ2までのStandard Edition「メモリ内のページのロック」は、SQL Server Standard Editionではサポートされていませんでした。

2)有効にした後-再起動が必要 このページによると

質問:「SQL Server 64ビットのメモリにページをロックする必要がある天気」?

回答:はい

3)このサーバーを2014年にSQLサーバー2014に移行する(希望する)必要があります

このページには、メモリ内のロックページについての詳細があります とリマインダー:

enter image description here

3

sQLサーバープロセスメモリのかなりの部分がページアウトされました

このメッセージの意味を説明しましょう。これは、SQL Serverプロセスがディスクにページングされたことを意味します。OSで実行されているOSまたはアプリケーションがメモリを要求し、OSが連続したチャンクを見つけられなかったため、SQL Serverを一時的にディスクにページングし、要求するプロセスに物理メモリを提供しました。

Karthick PKのブログ を読んだ場合、SQL ServerプロセスのワーキングセットがWindowsによってページアウトされる可能性がある状況がいくつかあります。

  1. Windowsが適切なタイミングとしきい値ですべてのリスニングプロセスに正しい通知を送信していない場合。

  2. SQL ServerがWindowsからの低メモリリソース通知に十分な速度で応答しない場合。

  3. SQL Serverが物理メモリ不足の通知を受信すると、内部キャッシュをトリミングしてメモリ使用量を削減します。この効果は5秒間適用され、その後1分間一時停止されます。これは、空腹/障害のあるアプリケーションがすべてのメモリを消費するのを防ぎ、SQL Serverが継続的に使用量を拡大できるようにするためです。 1分間の休止後もメモリ不足の状態が続く場合は、効果が再度適用されます。したがって、SQL Serverの使用率を5秒間スケーリングした後でも物理メモリに負荷がかかっている場合でも、ウィンドウはSQL Serverのワーキングセットをページアウトします。

  4. すべてのプロセスのワーキングセットがトリミングされるWindowsの条件。

  5. Windowsは、さまざまなまたは特定のプロセスのワーキングセットの特定の割合をトリミングすることを決定する場合があります

SQL ServerがOSにメモリの奪取を許可したのはなぜですか、これがSQL Serverの設計方法です。

最小サーバーメモリも1740に増やす必要がありますか?

私はあなたがこの考えをどこから得たのかわかりません、最小サーバーメモリはここでは何の役割もありません、触れないでください。 SQL Serverではなく、ここでメモリの負荷に直面しているOS。

12:15:37にアラートを受け取りましたPM wrsleic1のデフォルトインスタンスで、「SQLサーバープロセスメモリのかなりの部分がページアウトされました」という警告が表示されました。

私はあなたの質問を読むことができるので、あなたはこのメッセージを去年そして今一つの出来事を得ました。その発生を心に留めておくと、OSで実行中の何かが重大な問題を発生させて、より多くのメモリを要求し、SQL Serverが被害を受けることはありません。

回避策

ここでの回避策は、SQL Serverサービスアカウント メモリ内のロックされたページの特権 を提供することです。これにより、バッファープールからのページアウトが回避されますが、非バッファープールは引き続きページアウトできます。

ソリューション。

  1. システムで実行されていて、より多くのメモリを要求しているものを調べます。 Perfmonカウンタープロセス:プライベートバイトとワーキングセットはここで便利です。

またはRAMMAPツールをダウンロードしてください。つまり、Karthickのブログがあり、メモリ消費量を確認できます。

  1. SQL Serverマシン上で実行されている他のサービスがあり、メモリ要件が増加し、OSがページングのハードステップを踏まなければならない状況が発生する場合があると感じます。 私はあなたがさらに追加することをお勧めしますRAM Windowsマシン
3
Shanky