web-dev-qa-db-ja.com

メモリ不足のため、アプリドメインにアンロードのマークが付けられています

私のSQLサーバーログ(2005 SP4)に、数秒ごとに次のメッセージが表示されます。

「AppDomain XXX [DataBase.dbo [runtime]、YYY]は、メモリ不足のためアンロードするようにマークされています」

私たちのサーバー:

  • Windows Server 2003 R2 Enterprise Edition SP2
  • 32 Gb RAM
  • 物理アドレス拡張
  • Intel Xeon CPU X5675 x 2(6コア)3.07Ghz

  • 畏敬の念

  • SQL ServerにCLRコードがあります
  • 起動時に-g2048(私はDBAではありません。この値は元従業員によって設定されました)

Memtoleaveまたはvasに関する多くの記事を読みましたが、問題を診断する方法がわかりません。

何か案が ?

3
remi bourgarel

マイクロソフトには、この動作に関する KB記事 があります。 32ビットアプリケーションを備えた32ビットOSを入手したため、プロセスのアドレス空間は4 GiBです。 AWEはより多くのメモリにアクセスするために使用できますが、バッファプールの使用に対してのみ制限されます。 ドキュメント に従って:

SQL Serverバッファープールは、AWEマップメモリ​​を完全に利用できます。ただし、SQL Serverの仮想アドレス空間に対して動的にマップおよびマップ解除できるのはデータベースページだけであり、AWEを通じて割り当てられたメモリを最大限に活用できます。 AWEは、仮想アドレス空間に永続的に存在する追加のユーザー、スレッド、データベース、クエリ、およびその他のオブジェクトを直接サポートすることはできません。

短期的な解決策:CLRコードがメモリ使用量を最小限に抑えることを確認します。

長期的なソリューションについては、64ビットにアップグレードしてください。

補遺

Kimberly TrippがDBAの観点からCLRに関する ホワイトペーパー について書きました。彼女には、CLRリソースの使用状況を追跡するために使用できるいくつかのNiceクエリとPerfmonカウンターがあります。

3
vonPryz