0

Windows フォーム アプリケーションがあり、アプリケーションのバックエンドは SQL Server Express 2005/2008 です。当社のアプリケーションは、Windows XP SP3/ Windows Vista/ Windows 7 にインストールできます。

SQL Server Express で大量のメモリ リークが発生しました。

通常、アプリケーションがユーザーによって使用されていない場合でも、2 つのプロセスが実行されています。

  1. ファイルの可用性を確認するためのポーリング プロセス。(ファイルが利用できない場合は、構成設定を確認するために 1 つのクエリのみが起動されます)

  2. スケジューリング プロセス。(このプロセスは、スケジュールされたタスクをチェックするために毎分クエリを起動します)

SQL Server (sqlsrvr.exe) のメモリ使用量が増え続けていることがわかりました。約 1 時間でメモリ使用量が最大 1GB に達し、それが下がることはありません。

また、ポーリング プロセスの間隔を長くすると、メモリ使用量が徐々に増加しますが、増加することにも気付きました。

SQL サーバーによるメモリ使用量が増えると、マシンのパフォーマンスと、そのマシンで実行されている他のすべてのアプリケーションのパフォーマンスが低下します。

この場合、SQL サーバーのメモリ使用量を制御するための提案を提供してください。

PFB 詳細:

  1. 問題を引き起こすソフトウェア:SQL Server 2005/2008 Express エディション (名前付きインスタンス)

  2. 問題をシミュレートできるオペレーティング システム: Windows XP SP3/ Windows Vista/ Windows 7

よろしく、

アビニート

4

1 に答える 1

1

SQL Server は、システム上のすべてのメモリを取得し、それを内部キャッシュに使用するように設計されています。SQL Server と同じマシンで他のものを実行しないでください。これはリークではなく、意図された望ましい動作です。意図的に。メモリ マネージャー アーキテクチャを参照してください。

特殊なケースとして、SQL Server Express エディションは内部バッファー プール サイズを 1Gb に制限しています。ただし、SQL Server が消費するメモリはバッファ プールだけではありません。の値を指定することで、SQL Server のバッファー プール サイズをさらに制限できますmax server memory

于 2012-10-04T06:51:55.457 に答える