現在、実稼働環境で .NET Windows サービス アプリケーションを監視し、メモリ ダンプを収集できるソリューションを探しています。いくつかの特定のしきい値に基づいて、自由に、アプリケーションのクラッシュに基づいてそれらを収集したいと思います。これを達成するためのさまざまな方法を認識しています。
- DebugDiag
- Procdump
- WERを通じて
- ADプラス
- WinDbgなど
メソッドの中には、オプション #3 など、クラッシュ時の収集を容易にするものもあれば、#1 や #2 など、パフォーマンス カウンターに基づいてトリガーできるものもあります。非侵襲的なデバッガーであれば、コレクションを実現するのに役立ちますが、アタッチするとパフォーマンスにどのような影響があるかわかりません。たとえば、-e スイッチを指定して Procdump を使用して、未処理の例外のメモリ ダンプを収集した場合、監視対象のアプリケーションのオーバーヘッドはどのくらいになるでしょうか? 実稼働環境について言及していることに注意してください。
メモリ ダンプ収集用の非侵襲的デバッガを接続することによるパフォーマンスへの影響を説明するソースまたは方法を教えていただければ幸いです。理想的には、それは私の期待を超えていますが、定量的な尺度になるでしょう.
PS: アプリケーションが完全にフリーズしているディスクにメモリ ダンプが書き込まれるまでの時間については言及していません。それは別のことです。