[Sitecore][Log Error] Insufficient memory available in the buffer pool

Version: Sitecore.NET 6.6.0 (rev. 130214)

Tag: deadlock, SqlException,

Related Error Messages:

There is insufficient memory available in the buffer pool.

ManagedPoolThread #19 00:30:14 ERROR Could not update index entry

これまでの仕事の経験で、お客さんから時よりブラウザからタイムアウトされてしまう時がある。ログファイルをみるとSystem.Data.SqlClient.SqlExceptionに関連したエラーの場合は多いです。特に何あらかのdeadlockedとかがあると、データベースのが必要になります。この問題に出会った時にいつも下記の作業をします。

1.下記のテーブルを確認して、必要によってクリーニングします。
History, PublishQueue, EventQueue and Links table

[css]
DECLARE @DBList VARCHAR(MAX)
SELECT @DBList = COALESCE(@DBList+’,’ ,”) + Name
FROM master.dbo.sysdatabases
WHERE [name] LIKE ‘%sandbox%’
print @DBList
USE [master];
DECLARE @SQL nvarchar(255)
, @Pos INT
, @Loop BIT
, @vcDBName VARCHAR(64)
, @vcDBNames VARCHAR(1024)
, @vcBackupFileRoot varchar(125)

SET @vcDBNames = @DBList
SELECT @Loop = CASE WHEN LEN(@vcDBNames) > 0 THEN 1 ELSE 0 END
WHILE (SELECT @Loop) = 1
BEGIN
SELECT @Pos = CHARINDEX(‘,’, @vcDBNames, 1)
IF @Pos > 0
BEGIN
SELECT @vcDBName = SUBSTRING(@vcDBNames, 1, @Pos – 1)
SELECT @vcDBNames = SUBSTRING(@vcDBNames, @Pos + 1, LEN(@vcDBNames) – @Pos)
PRINT ‘Truncate History/EventQueue/PublishQueue/Links table in ‘ + @vcDBName
SET @SQL = ‘USE ‘ + @vcDBName + ‘ TRUNCATE TABLE [History];
TRUNCATE TABLE [EventQueue]; TRUNCATE TABLE [PublishQueue]; TRUNCATE TABLE [Links]; ‘;
PRINT @SQL
EXEC (@SQL)

END
ELSE
BEGIN
SELECT @vcDBName = @vcDBNames
SELECT @Loop = 0
PRINT ‘Truncate History/EventQueue/PublishQueue/Links table in ‘ + @vcDBName
SET @SQL = ‘USE ‘ + @vcDBName + ‘ TRUNCATE TABLE [History];
TRUNCATE TABLE [EventQueue]; TRUNCATE TABLE [PublishQueue]; TRUNCATE TABLE [Links]; ‘;
PRINT @SQL
EXEC (@SQL)
END
END
[/css]

これはサンプルです。Core/Master/Webとしています。

20140110_01

3.MaxWorkerThreads を多めに設定:

[css]<code class="xml plain"><</code><code class="xml keyword">setting</code> <code class="xml color1">name</code><code class="xml plain">=</code><code class="xml string">"MaxWorkerThreads"</code> <code class="xml color1">value</code><code class="xml plain">=</code><code class="xml string">"100"</code><code class="xml plain">/>”[/css]

4.履歴エンジン

[css]</p>

<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain"><</code><code class="xml keyword">Engines.HistoryEngine.Storage</code><code class="xml plain">></code></div>
<div class="line number2 index1 alt1"><code class="xml spaces">  </code><code class="xml plain"><</code><code class="xml keyword">obj</code> <code class="xml color1">type</code><code class="xml plain">=</code><code class="xml string">"Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel"</code><code class="xml plain">></code></div>
<div class="line number3 index2 alt2"><code class="xml spaces">     </code><code class="xml plain"><</code><code class="xml keyword">param</code> <code class="xml color1">connectionStringName</code><code class="xml plain">=</code><code class="xml string">"$(id)"</code> <code class="xml plain">/></code></div>
<div class="line number4 index3 alt1"><code class="xml spaces">     </code><code class="xml plain"><</code><code class="xml keyword">EntryLifeTime</code><code class="xml plain">>30.00:00:00</</code><code class="xml keyword">EntryLifeTime</code><code class="xml plain">></code></div>
<div class="line number5 index4 alt2"><code class="xml spaces">  </code><code class="xml plain"></</code><code class="xml keyword">obj</code><code class="xml plain">></code></div>
<div class="line number6 index5 alt1"><code class="xml plain"></</code><code class="xml keyword">Engines.HistoryEngine.Storage</code><code class="xml plain">></code></div>
</div>
<p lang="ja">[/css]

ディフォルトは30日となっているのですが、もしインポートの設定がある場合、CMにて短くします。通常三日に設定しています。

[css]</p>

<div class="container">
<div class="line number1 index0 alt2"><code class="xml plain"><</code><code class="xml keyword">EntryLifeTime</code><code class="xml plain">>3.00:00:00</</code><code class="xml keyword">EntryLifeTime</code><code class="xml plain">>[/css]

Uncategorized