6

アプリケーションを数時間実行していたところ、突然次のようになりました。

SqlException はユーザー コードによって処理されませんでした:

ページ (1:37660679)、データベース ID 10 のバッファー ラッチ タイプ 2 を待機中にタイムアウトが発生しました。

例外の詳細を表示すると、「Number」「845」であることがわかります。ErrorCode と HRESULT -2146232060

質問: この問題を修正またはデバッグするにはどうすればよいですか?

  • ASP.NET C# .NET 4.5 と SQL Server 2012 を実行しています。

  • chkdsk を実行しましたが、エラーは見つかりませんでした。

ログには 845 イベントに関するものは何もありません。アプリケーション ログで見つけたものの一部を次に示します (イベント ID 847 の場合)。

ラッチの待機中にタイムアウトが発生しました: クラス 'FGCB_ADD_REMOVE'、id 00000004F146FBD8、タイプ 2、タスク 0x00000004F60450C8: 0、待機時間 300 秒、フラグ 0x1a、所有タスク 0x00000004EDC38928。待ち続けます。

同じように見える 847 がたくさんあります。次に、イベント ID 846 のイベントははるかに少なくなります。

バッファ ラッチの待機中にタイムアウトが発生しました -- タイプ 2、bp 00000004F96EE880、ページ 1:37660679、統計 0x10b、データベース ID: 10、アロケーション ユニット ID: 72057594048544768、タスク 0x00000004D502E188: 0、待機時間 300 秒、0x1a を所有するフラグタスク 0x00000004D5316558。待ち続けない。

847 イベントの xml ビューを次に示します。

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="MSSQLSERVER" /> 
  <EventID Qualifiers="16384">847</EventID> 
  <Level>4</Level> 
  <Task>2</Task> 
  <Keywords>0x80000000000000</Keywords> 
  <TimeCreated SystemTime="2013-02-24T19:21:54.000000000Z" /> 
  <EventRecordID>281870</EventRecordID> 
  <Channel>Application</Channel> 
  <Computer>xyz-PC</Computer> 
  <Security UserID="S-1-and-so-on" /> 
  </System>
- <EventData>
  <Data>FGCB_ADD_REMOVE</Data> 
  <Data>00000004F146FBD8</Data> 
  <Data>2</Data> 
  <Data>00000004D5316188</Data> 
  <Data>0</Data> 
  <Data>1200</Data> 
  <Data>1a</Data> 
  <Data>00000004EDC38928</Data> 
  <Binary>4F0300000A00000006000000540053002D005000430000000800000053006300680061006200650072000000</Binary> 
  </EventData>
  </Event>

行でエラーが発生しました

  db.SubmitChanges();

ウォッチウィンドウで私は見ることができます:

db.GetChangeSet() {Inserts: 1, Deletes: 0, Updates: 0} System.Data.Linq.ChangeSet

グーグルはマイクロソフトからいくつかのホットフィックスを表示しますが、それらはSQLサーバー2008専用です.

4

2 に答える 2

4

ラッチはFGCB_ADD_REMOVEおそらく、あなたの場合、自動拡張のためにファイルが拡張されたことを意味します。これにより、多くの待機と IO 負荷が発生します。

あるいは、これは一般的に IO 過負荷のサーバーの症状 (負荷またはディスクの障害によるもの) にすぎない可能性があります。他の IO 待機のタイムアウトも見られるため、これはおそらく単なる症状です。

サーバー ディスクが過負荷になっているかどうかを判断し (たとえば、perfmon を使用して)、状況を改善します。

于 2013-02-24T22:32:06.603 に答える