1

非常に大規模な3層の.NET4.0Webアプリケーション(ASP.NET、WCF、SQL Server 2008 R2)があり、診断しようとしているパフォーマンスの問題がいくつかあります。ASP.NET層はSQLセッション状態プロバイダーを使用し、セッション状態はかなり広範囲に使用されます。

<sessionState mode="SQLServer" sqlConnectionString="..." cookieless="false" timeout="20"/>

セッションをデータベースにロードして保存するのにかかる時間を把握しようとしています。これは、SQLプロファイラーまたは他のデータベース手段を使用してその層の時間を測定することとは異なることに注意してください。ASP.NET層からの合計時間を測定したいと思います。 つまり、セッションオブジェクトのシリアル化/逆シリアル化、ワイヤ時間、およびSQLの保存/読み込み時間が含まれます。

私は(80年代初頭から)かなり経験豊富な開発者であり、今では何時間もWebをグーグルで検索しています-セッション状態のアプローチや一般的なパフォーマンスの概念などを対比する記事がたくさんありますが、この合計を実際に測定する方法については何も見つかりませんSQLセッション状態プロバイダーの時間。私は当初、HttpModuleを使用してイベントをフックし、ストップウォッチを使用することを考えましたが、これへのクリーンなパスはないようです。(私は、数パーセントまで かなり正確なアプローチに落ち着きます...)

どんなアイデア/提案も大歓迎です、ありがとう。

4

4 に答える 4

0

セッションのタイムアウトを秒単位に変更してから、セッションがロードされて保存されなくなるまで、さらに低い値に変更することはできませんか?

于 2013-03-22T14:19:18.023 に答える
0

最初に頭に浮かぶのは、おそらくセッション状態変数のロード/ストア以外には何もしないページを作成することです。そこから、ページに何度もアクセスするコード化された UI テストをセットアップし、ページの読み込み時間に関連するばらつきと分布の統計的推定を作成できます。

WCAT (Web Capacity Analysis Tool) を使用して、負荷がかかった状態でパフォーマンスがどのように変化するかを確認することもできます...

于 2014-05-06T18:31:16.427 に答える
0

マネージド スタックは、VS プロファイラーでプロファイリングできます。見る:

低レベルのものについては、Xperf を使用します。Two Minute Drill: Introduction to XPerf を参照してください。

SQL Server 側には、 Waits や Queuesなど、パフォーマンスのトラブルシューティングのための多くの方法論があります。プロファイラー トレースを使用できる特定のステートメント期間/IO コストについては、「SQL Server プロファイラーを使用するためのシナリオ 」を参照してください。

あなたの場合、非常に具体的侵襲的な方法で、パフォーマンスカウンターを使用できます。在庫品ではありませんが、独自のものを作成してください。XSLT を使用してパフォーマンス カウンターを生成するを参照して、独自のパフォーマンス カウンターでアプリを強化するために必要な配管を簡単に生成してから、コードをパフォーマンス トレースに接続します。標準のパフォーマンス カウンター ツール チェーン ( logman.exeperfmon.exe ) を使用して、キャプチャと分析を行います。

于 2013-03-22T16:09:43.433 に答える