2

複数のオンライン トランザクションで ASP.NET MVC 3 Web サイトを管理しています。ウェブサイトでは、顧客は注文を出し、請求書を支払うことができ、ベンダーは顧客に請求することができます。これはすべて同時に発生する可能性があるため、スレッドの安全性を確保するためのセマフォがあります。

私が気付いたのは、週に 1 回、Web サイトが 10 分間停止することです。最初に考えたのはセマフォのデッドロックでしたが、セマフォ ログを配置して結果を分析したところ、デッドロックは発生していないようです。また、Web サイトは 10 分後に自動的に元に戻ります。

調査中に、セマフォを使用している部分だけでなく、Web サイト全体が応答しなくなることに気付きました。彼らは皆データベースをタフに使っています。そのため、私の主な容疑者はデータベースです。

奇妙なのは、毎回、ウェブサイトが 10 分間、ほぼ秒単位でフリーズすることです。SQL Server は、この遅延を説明できる定期メンテナンスまたは何かを行うことができますか? そうでない場合、何が原因であると考えられますか?

4

2 に答える 2

1

あなたの質問に対する答えは「はい」のようです。物事をロックしている環境で何かが起こっています。

sp_who2を実行して、ストールしたときに何が実行されているかを確認しましたか?

それが不便な場合は、sp_who2の出力を5分ごとにテーブルにダンプするジョブを設定します。ストールすると、そこから何が実行され、動作しているかを確認できます。

マスターデータベースがロックされているように見える、同様の問題に直面しました。結果として、データベースの名前変更は機能しません。幸い、これは実際のトランザクション環境ではないため、5分間待ってから再試行するとうまくいきます。

于 2012-06-01T15:36:05.273 に答える
1

ASP.NET ハングは、さまざまな理由で発生する可能性があります。通常、SQL がハングしないという問題がある場合、接続またはコマンドのタイムアウトが発生します。

あなたははるかに良いです

  • Windows 用のデバッグツールを入手する
  • AdPlus を使用してメモリ ダンプ ( adplus -hang -pn processname.exe) または DebugDiag を取得し、ダンプ ルールを設定します。
  • WinDbg (または 4.0 フレームワークの場合は VS 2010) を使用して (シンボル キャッシュを設定した後) 、スレッドとヒープ オブジェクトを使用して何が起こっている!threadsかを調べ始めます。!dumpheap -stat

本番環境の問題をデバッグするのは非常に難しく、WinDbg は使いやすいツールではありませんが、ログを推測して調べるのはさらに難しいことに注意してください。

于 2012-06-01T16:04:32.407 に答える