私たちのアプリケーションには、いくつかのパフォーマンス上の問題があります。私はdotTraceのようなものを使ってどこに問題があるのかを考えましたが、dotTraceはパフォーマンスをさらに低下させるでしょう。プロダクションASP.NETアプリケーションをどのようにプロファイルしますか?
パフォーマンスに影響を与えないでプロダクト環境にあるアプリケーションをプロファイルするには、どのような方法が最適ですか?
私たちのアプリケーションには、いくつかのパフォーマンス上の問題があります。私はdotTraceのようなものを使ってどこに問題があるのかを考えましたが、dotTraceはパフォーマンスをさらに低下させるでしょう。プロダクションASP.NETアプリケーションをどのようにプロファイルしますか?
パフォーマンスに影響を与えないでプロダクト環境にあるアプリケーションをプロファイルするには、どのような方法が最適ですか?
一般的な答えは「しないでください」です。
それ以外の場合は、パフォーマンスカウンターを使用して多くの利益を得ることができます。組み込みカウンターが役立たない場合は、独自のカウンターを作成することができます。
パフォーマンスカウンターを使用すると、負荷テストによってパフォーマンスの問題を再現する方法を知ることができます。
次のアイデアは、興味のある領域を絞り込むことです。遅いWebサービスへのアクセスであることが判明した場合、アプリケーション全体のパフォーマンスに影響はありません。
次に、アプリケーションをインストルメントしてください。できれば設定を使用してください。エンタープライズライブラリロギングアプリケーションブロックは、ロギングをアプリケーションに追加できますが、オフに設定することができます。次に、どのような種類の情報をログに記録し、どこにログを記録するかを設定できます。
これにより、ロギングからイベントログへのロギングからXMLファイルへのロギングまでのロギングのコストを選択できます。そして、実行時にこれをすべて決めることができます。
最後に、dotTraceや、実行中のアプリケーションにコードを追加するIISの再起動が必要なものは使用できません。生産中ではありません。上記の考え方は、そうする必要がないという目的のためです。
Perfカウンターはあなたの親友です。組み込み関数だけでなく、アプリケーションでも数十、数百の新しいカウンターが公開される可能性があります。私はまた、XML/CSLT変換を使ってパーフカウンターを簡単に生成する方法についてブログに書いています。http://rusanu.com/2009/04/11/using-xslt-to-generate-performance-counters-code/ –
あなたは、彼らが "オーバーヘッドがほとんど目立ただった" と主張
http://www.red-gate.com/products/ants_performance_profiler/index2.htm
蟻プロファイラを使用することができます。
14日間の無料試用版がありますので、試してみてください。
編集:私はJohnのコメントに同意します。それは中断し、停止/停止させるためにいくつかの停止時間を必要とします。ボトルネックを特定するためのテスト環境で使用することをお勧めします。
私は、 ANTSを実行できるようにする多くのプロダクションショップを知っています。 IISを再起動する必要がありますか?インストルメンテーション命令をコードに追加するか、スタックトレースを格納するために定期的に割り込みする必要がありますか?もしそうなら、それはしばしば生産に繋がる危険にさらされるほど破壊的であると考えられます。 –
実稼働環境の実際の負荷に近い場所に多数のセッションでアプリケーションをロードテストしましたか?
最初に気になることは、あなたのアプリが負荷がかかりすぎてスケーリングしていないこと、またはあなたのdbがサイズの増加にうまく適応していないことです(非常に限られた数の同時セッションでもこのような問題が発生します)。本当に何でもかまいません。
私の提案は、実稼働環境を複製し、適切な負荷テストを実行してからデータを見ると、手がかりを与えることです。
あなたは本番環境でゲームをしたくないですが、まだ持っていなければ、ロギングを使用してキーイベントのシーケンスと時間を追跡し、そこから取得することができます。
私たちは再検査を試みましたが、成功しませんでした。 –
システムのパフォーマンスカウンタだけでなく、ANTプロファイルも使用できます。問題が何であるかを判断するのに役立ちます。ここで
は、パフォーマンスカウンタについてのいくつかの詳細は、私はすべてを見て、生産プロセスのいくつかのメモリダンプを取ることをお勧めします
http://msdn.microsoft.com/en-us/library/fxk122b4.aspx
..ですトレースをスタックし、パターンが見つかるかどうかを確認します。
プロファイリングメモリまたはcpu?
メモリー:(その後、「ダンプを作成」打ち上げタスクマネージャ、右のプロセスをクリック)のw3wpプロセスのメモリダンプを作成することです最良の方法は、ローカルマシンにダンプをコピーしてそれを分析WinDbg。どのクラスが最も多くのメモリを消費するかを見てください。 Stackoverflowには、WinDbgの使い方と.NETヒープの分析方法に関する質問/回答がたくさんあります。
CPU:我々はサムサフラン(woohoo、StackOverflowののクリエイターの一つ!)彼のプロジェクトが放棄されたことにより、短いコマンドラインプロファイラを使用しますが、我々はそれをフォークし、ここでそれを維持します。 https://github.com/jitbit/cpu-analyzer誰もが貢献できます。これは、MicrosoftのDbgManager
を使用してスレッドに接続し、実行に最も時間がかかるコールスタックを検出します。
アプリケーションの構造についてもう少し説明できると思いますか?あなたが使っているライブラリとそれを整理する方法は、私たちがより多くのフィードバックを与えるのに役立ちます。 – roundcrisis