6

MS コマース サーバーを使用して c# で記述され、32 ビット環境で実行されているかなり大量の ASP.Net サイトがあります。最大 980 メガバイトのワーカー プロセスをよく見かけます。このプロセスのプロファイルを作成し、このサイトのメモリ フット プリントを削減するためにコードを改善できる箇所を特定したいと思います。私の質問は、ASP.Net Web アプリケーションでこの種のことを行うのに、どのツールがうまく機能したか?

私は非常に具体的なフィードバックを提供してくれるツールを探しています。これは、コードで何を変更する必要があるかを明確に理解するのに本当に役立ちます。より具体的なデータセットを比較するために、このツールが本番環境のワーカープロセスをプロファイリングできれば最高です.

[編集]

これまでのところ、Ants と JetBrains の間のトスだというのがコンセンサスのようです。両方使ったことある人いますか?もしそうなら、どちらが優れていましたか、またはそれぞれの長所と短所は何ですか?

4

7 に答える 7

9

無料の方法があります。

  • タスクマネージャーを起動
  • w3wp プロセスを右クリック
  • 「ダンプの作成」を選択します (この機能について知っている人がほとんどいないことに驚いています。ある時点で私を含めて!)
  • ダンプ ファイルをローカル マシンにコピーします (運用サーバーに負担をかけないようにします)。
  • Visual Studio でファイルを開く
  • 楽しい
  • クラスがメモリなどを使用する詳細ビューについては、「管理されたメモリのデバッグ」を選択します。

私の知る限り、上記にはVisual Studioの「Ultimate」エディションが必要です(現在は「Enterprise」と呼ばれていると思いますか?)。持っていない場合は、次の手順に従います (非常に簡単です)。

  • WinDbg を起動します (無料のツール、Windows SDK の一部です。すべての SDK ブロートウェアなしで WinDbg をダウンロードする方法については、StackOverflow にたくさんの回答があります)。
  • Ctrl + D を押して、ダンプ ファイルを WinDbg にロードします。
  • .loadby sos clr(これにより、WinDbg が .NET プロセスを分析できるようにする SOS.dll が読み込まれます。SOS.dll は NET Framework の一部であるため、既にお持ちの可能性があります)
  • type !dumpheap -stat(これにより、メモリ使用量の昇順でソートされたクラス名が出力されます。スキップsystem.stringsystem.byte[]クラスの原因は副作用であり、原因ではありません...)

2019 年からの更新: WinDbg は MS Store から入手できるようになりました。「WinDbg」を検索し、数回クリックするだけです。

于 2017-06-06T10:04:56.497 に答える
7

ANTS Profilerは、ASP.NET アプリケーションのプロファイリングに非常に優れています。

于 2009-06-12T20:56:34.083 に答える
3

http://www.jetbrains.com/profiler/

于 2009-06-12T20:58:01.443 に答える
1

ANTS メモリー・プロファイラーのようなものが役に立つかもしれません。

于 2009-06-12T20:57:03.693 に答える
1

Automated QA のAQTimeも考慮してください。

于 2009-06-12T21:04:22.817 に答える
0

私たちはAviCodeを使用していますが、これは非常にうまく機能します。

于 2009-06-12T20:58:02.910 に答える
0

JetBrains の dotTrace に何度か救われました。無料ではありませんが(試用可能)、本当に強力です!

于 2009-06-12T21:00:47.053 に答える