web-dev-qa-db-ja.com

SQL Serverのメモリが多すぎる

これまでに見たことがないSQLサーバーの1つに問題があります。

SQL Server(Enterprise Edition)は、70MBのデータのみを持つデータベースを実行します。しかし、数時間後、サーバーは10 GB以上のメモリを消費します。数日後、サーバーのメモリが不足します。 SSMSで最大メモリパラメータを既に構成しましたが、役に立ちませんでした。

問題を見つけるために何をすべきか、アイデアはありますか?

Dbcc memorystatusの結果へのリンクは次のとおりです。 https://drive.google.com/open?id=0B2FJAT6lteKJOEJmUFdqb0ZERF

データベースバージョン:Microsoft SQL Server 2014(SP2-CU5)(KB4013098)。 Enterprise Edition。これは仮想マシンです。

私は別のスレッドをチェックし、このクエリを見つけました:

SELECT TOP (21) [type] = COALESCE([type],'Total'), 
  mb = SUM(pages_kb/1024.0)
FROM sys.dm_os_memory_clerks
GROUP BY GROUPING SETS((type),())
ORDER BY mb DESC;

これをSQL Serverで実行すると、次の結果が得られます。

  1. 合計= 2452,9
  2. CACHESTORE_SQLCP = 2141,5
  3. MEMORYCLERK_SQLBUFFERPOOL = 160
  4. MEMORYCLERK_SOSNODE = 33
  5. USERSTORE_SCHEMAMGR = 30.94

キャッシュストアの値が数時間しか実行されていなかった後のキャッシュストアの値が高いのは、この正常ですか?

このクエリを実行する:

select value_in_use
from sys.configurations
where name = 'max server memory (MB)'

結果は8192になります。これは、インスタンスに構成した値です。

現時点では、メモリを使いすぎないように、SQL Serverを毎晩再起動する必要があります。

6
JSC

あなたの質問は最初、私を驚かせました。通常、サーバーの最大メモリが正しく構成されていないというメモリの問題が発生します。しかし、その後、私は累積的な更新に注力し始め、それらがSQL 2014のこれらのすべての累積全体にわたって縫い付けられたメモリリークの地雷原であることに気付きました! MicrosoftがSQL 6.5-7.0のプレイブックからヒントを得て、私たちにレトロに行ったようなものです。

トラブルシューティングに何時間も費やすのではなく、次のことを検討します。

オプションA: VMのスナップショットを取得し、SQL 2014 sp2の最新の累積的な7更新をインストールします。必要に応じてロールバックします(メモリリークのようです) SSASに関連するものは、このアップデートに含まれています)。

オプションB:累積8がリリースされたときにメモリリーク修正を追加することにより、Microsoftのサポートチケットを作成して、自分自身と残りの人たちを助けることができます。そして、マイクロソフトの調査結果に基づいて質問を更新します。

個人的には、SQL Serverが最大メモリ制限をはるかに上回って十分な理由があるとは思わない-どんな状況でも。

1
Sting