誰かが助けてくれるといいのですが。私たちはWindows Server 2008 R2 16GBのRAMのマシンを持っています。これにより、使用可能なすべてのメモリが何かによって消費され続けます。何もタスクマネージャーまたはリソースモニターは、300MBを超えるメモリを使用しているプロセスを示しますが、サーバーでのメモリ使用量15.7GBです。
実行されているのはSQL Server 2008およびIIS7.5(ASP.Netを使用)のみです。
注:RAM再起動後の使用率は低くなり、上向きに動作します。1週間ほど後、私たちはこの状況で自分自身を見つけ続けます。
どのようにしてすべての記憶を食べているのかを知るにはどうすればよいですか? :(
これは64ビットサーバーですか?メモリ内のロックページのローカルポリシーが有効になっていますか? SQLが残りのメモリを消費している可能性がありますperfmonカウンタを見ると、メモリの割り当てがわかります
SQLでカウンターを表示することもできます
SELECT
object_name
,Counter_name
,cntr_value
,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
sys.dm_os_performance_counters
WHERE
object_Name LIKE '%Buffer Manager%'
AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
'Database pages' )
UNION SELECT
object_name
,Counter_name
,cntr_value
,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
sys.dm_os_performance_counters
WHERE
counter_name IN ( 'Target Server Memory (KB)',
'Total Server Memory (KB)' )
クイックテスト:SQL Serverを再起動します。
別の簡単なテスト:IISを再起動します。
それらの1つが原因であるかどうか、または別の場所を調べる必要があるかどうかは確実にわかります。
RamMap を使用して、メモリの移動先を確認することをお勧めします。
実際にメモリ関連の問題が発生していますか?
メモリ使用量は、実際にインストールされているメモリよりも高いになるか、または単にいっぱいになってとどまるかそこ?
メモリが満杯になっても問題が発生しない場合、それは単にキャッシュがその役割を果たしているだけです。 実際に必要になったときに、メモリは自動的に確保されます。
メモリ使用量が物理的な制限を超え、サーバーが停止して停止する場合は、メモリリークが発生しているため、デバッグする必要があります。
「キャッシュ」トピックに関するいくつかの興味深い記事:
http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory-Shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/Microsoft-windows-dynamic-cache-service.aspx
最初に、前述のとおり、パッチを適用して問題が解決するかどうかを確認します。
次に、それがうまくいかなかった場合は、 Process Explorer を使用して、メモリ使用量をよりよく確認します。 [表示]メニューに移動し、[列の選択]、[メモリの処理]、[プライベートバイト]、[仮想サイズ]、[ワーキングセットサイズ]オプションを確認します。これが何のせいかを示しているかどうかを確認してください。
思い切ったアプローチは、サービスを停止することです。 IISたとえば、アプリプールとWebガーデンが誤って構成されている(それらが多すぎる)場合は、候補となります)。
幸運を!