16

SQL サーバーを使用してセッションを管理する Web サイトの問題を調査しています。この Web サイトは、sitecore CMS に基づく asp.net Web フォームです。QA、ステージング、本番など、さまざまな環境で同じコードを使用しています。

本番環境では、サーバーへのトラフィックとはまったく関係のない CPU 使用率が定期的に急速に上昇しています。この CPU スパイクに伴い、ネットワーク I/O に対応するスパイクが見られます。

当社の監視ソフトウェアは、インターネットへのトラフィックと DB サーバーへのトラフィックを区別しません。ただし、DB サーバーで見られるのは、文字通り 1 秒あたり数百回の呼び出しdbo.TempGetStateItemExclusive3が asp セッション データベースにあり、すべて同じセッション ID に対して行われ、対応する量のページ リクエストが Web サーバーに着信することはありません。

同じコードと構成では、他の環境ではこの動作は見られません。また、他のセッション ID では表示されず、この 1 つの特定の ID だけです。

データベースから行を削除しても、同じセッション ID で再作成されるだけです。

アップデート

イベント ログに次のエラーが見つかりました。

Violation of PRIMARY KEY constraint 'PK__ASPState__C9F49290145C0A3F'. Cannot insert duplicate key in object 'dbo.ASPStateTempSessions'. The duplicate key value is (sessionidwiththeproblem). The statement has been terminated.
Stack trace:

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean\ breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand\ cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler,\ TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,\ RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,\ RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,\ RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult\ result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at System.Web.SessionState.SqlSessionStateStore.SqlExecuteNonQueryWithRetry(SqlCommand\ cmd, Boolean ignoreInsertPKException, String id)

重複したセッション ID を作成しようとする方法を知っている人はいますか?

4

3 に答える 3

0

Sitecore の問題ではなく、SQL の問題のように見えます。セッションがクリアされていないことに関連している可能性があります。私は DBA ではありませんが、SQL エージェントは有効になっていますか? 実稼働 SQL サーバーは、他の環境とは異なるサービス パック/パッチ レベルにありますか (この記事では、同様の問題に対するいくつかの古い修正プログラムについて言及しています)。

誰かがこれにもっと具体的に答えることができるまで、調査のためのいくつかのリンク! 使用している SQL のバージョンに関する情報を含めることをお勧めします。

http://jerschneid.blogspot.co.uk/2010/01/aspnet-sql-server-requests-timing-out.html

https://www.simple-talk.com/sql/sql-tools/how-to-identify-blocking-problems-with-sql-profiler/

于 2013-03-22T15:34:54.747 に答える
0

IIS 内のアプリケーション セットアップに含まれる可能性のある概念を調べるには、Web デプロイ (msdeploy) を使用してサイトの構成をダンプできます。次に、問題のあるボックスとそうでないボックスの出力を比較します。

このようなものがコンソールに出力されます

msdeploy –verb:dump –source:appHostConfig="Default Web Site"

またはXMLとして

msdeploy –verb:dump –source:appHostConfig="Default Web Site" -xml

http://technet.microsoft.com/en-us/library/dd569101(v=ws.10).aspxを参照してください。

于 2013-03-26T10:26:32.853 に答える