SOA 環境における比較的典型的な .NET 4 システム (つまり、Windows Server 2008 R2、IIS 7 上の RESTful Web サービス、NServiceBus メッセージング用の Windows サービス、SQL Server 2008 R2 など) を考えると、ベスト プラクティスまたはデファクト ソリューションは何ですか?実稼働環境で 24 時間年中無休のパフォーマンス監視を実行するためのエンタープライズ価格タグ)?
必ずしも CPU/メモリ/ディスク IO の消費量ではなく、たとえば、1 分あたりの createAccount() 呼び出しの数、generateResponse() メソッドにかかる平均時間、および generateResponseStarted と generateResponseComplete (メソッド呼び出され (サードパーティを呼び出すことができます)、応答はそれぞれ返される準備ができています)。
グーグルで調べた後、オプションは低レベルのプロファイラー(dotTraceなど)とパフォーマンスカウンターの実装、およびPerfMonまたはその他のOpManagerタイプの製品でのそれらの使用にあるようです。
あなたは何をお勧めします?ライブ アプリケーションにパフォーマンス カウンターを実装すると、運用システムのパフォーマンスが大幅に低下しますか? そうでない場合、.NET での実装を合理化する優れたライブラリはありますか? はいの場合、memory-disk-cpu 以外のアプリケーションのパフォーマンスをどのように監視していますか?
@ライアン・ヘイズ
ありがとうございます。運用システムで異常な速度低下やスパイクが発生するのを確認する方法を探しています。たとえば、ストレス テスト中はすべて問題ありませんでしたが、何らかの理由で、信頼しているサード パーティに問題が発生したり、スレッド ロックが原因で DB が遅くなったり、SAN が道を譲ったり、その他の予期しないシナリオが発生したりします。低レベルのプロファイリングはオーバーヘッドが大きすぎますが、問題がある場合にのみカウンターをオンにするのはその時点では遅すぎます。さらに、比較するための履歴データが失われます (デルタが許容可能なしきい値を超えた場合に備えて、何らかの警告システムが必要になります)。人々が本番システムのパフォーマンスを監視する方法と、メモリ/CPU/サーバーに関連しない種類の監視に最適なアプローチは何かと思っています。