Windows でプロセスのメモリ使用量を長期間にわたって追跡するのに最適なツールは何ですか?

StackOverflow https://stackoverflow.com/questions/97590

  •  01-07-2019
  •  | 
  •  

質問

C#/.Net Windows サービスのメモリ使用量を長期間にわたって監視するために利用できる最適なツールは何ですか。私の知る限り、perfmon などのツールは短期間のメモリ使用量を監視できますが、長期間にわたってグラフィカルに監視することはできません。数秒ではなく数日にわたる傾向データが必要です。

明確にするために、長期間にわたってメモリ使用量を詳細レベルで監視し、時間枠全体と詳細レベルの両方をグラフに表示したいと考えています。小さなサンプリング間隔と大きなグラフが必要です。

役に立ちましたか?

解決

私の意見では、Perfmon はこれを行うための最良のツールの 1 つですが、監視したい時間に応じてサンプリング間隔を適切に設定するようにしてください。

たとえば、プロセスを監視したい場合:

  • 1時間 :私は 1 秒間隔を使用します (これにより 60*60 のサンプルが生成されます)
  • 1日分:私は 30 秒間隔を使用します (これにより 2*60*24 サンプルが生成されます)
  • 1週間:私は 1 分間隔を使用します (これにより 60*24*7 のサンプルが生成されます)

これらのサンプリング間隔を使用すると、Perfmon はカウンタの美しいグラフィック出力を問題なく生成できるはずです。

他のヒント

私は perfmon を使用し、結果を CSV にエクスポートし、その後の統計に Excel を使用しました。前回プロセスを監視する必要があったときは、これでうまくいきました

[コンピューターの管理] を試してみると (ここでは Windows を実行していると仮定して)、プロセスを時間の経過とともに監視できるようです。[コンピュータ管理] -> [パフォーマンス ログとアラート] に移動し、カウンタ/トレース ログを確認します。カウンタ ログを右クリックし、新しいログを追加します。ここで「オブジェクトの追加」をクリックし、メモリを選択します。ここで、[カウンターの追加] をクリックし、[パフォーマンス オブジェクト] を [プロセス] に変更し、プロセスを選択します。

メモリを監視すること自体は良いことですが、リークや古いオブジェクトを特定するためにメモリ プロファイリングを考えているかもしれません。 http://memprofiler.com/ ここでは良い選択ですが、他にもたくさんあります。

非常に具体的なことを実行したい場合は、タイマーで実行する独自の WMI ベースのロガーを作成することを恐れないでください。これを取得して、統計を処理する際に電子メールで送信し、増加が速すぎるか高すぎる場合に警告し、次のように送信することができます。グラフ作成などのためのXML

Python に精通していれば、このスクリプトを作成するのは非常に簡単です。

アクティブステートPython (無料) は、Win32 API の関連部分を、 win32プロセス モジュール。

チェックアウトすることもできます すべての win32 関連モジュール または使用します APIを取得しました Python の標準ライブラリを参照します。

を使用することをお勧めします .Netメモリバリデーター ソフトウェアのツールで検証します。このツールは、作業する .Net アプリケーションのメモリ管理に関連するさまざまな問題を解決するのに役立ちました。

私は C++ バージョンをより頻繁に使用しますが、それらは非常に似ており、割り当てられているオブジェクトのタイプをリアルタイムで確認できるという事実は、あなたにとって非常に貴重です。

perfmon よりも強力なものが必要な場合は、ProcessMonitor を使用しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top