2

プロダクション グレードのサーバー (デュアル クアッド コア、4g) で負荷テストを行うと、ガベージ コレクションに 40% 以上の時間を費やす ASP.NET 2.0 アプリケーションがあります。私は問題を切り分けようとしていますが、コードベースが大きく複雑であるため、処理が遅くなります。GC.Collect() 呼び出しはありません。この種の問題を特定する際に役立つツールや手法はどれですか?

4

5 に答える 5

6

Tess Ferrandez のブログにあるデバッグ ラボは、この種の問題を調べるときに非常に役立ちます。

于 2008-12-19T03:02:34.810 に答える
3

.Net CLR Profilerを使用してアプリのプロファイルを作成することから始めます(収集したデータを表示するための気の利いた GUI があり、無料です!)。ASP.Net アプリをプロファイリングする具体的な手順については、こちらを参照してください。この記事では、メモリ/パフォーマンスの問題、プロファイリング、および .Net CLR プロファイラーに関する GC の概要を説明しています。

于 2008-12-19T02:14:39.103 に答える
2

Dispose()あなたのチームの誰かがメソッドを実際にオーバーライドして頻繁に を呼び出しているかどうかを確認してみてくださいGC.Collect()。これは私のチームで発生し、Dispose()メソッドの 1 つを実行するのに 1 秒もかかったほどひどいものでした。

これは、サーバーがその時間の 40% をガベージ コレクションに費やしていると想像できる唯一の方法です。

于 2008-12-19T02:55:41.627 に答える
0

アプリ全体がクラッシュする直前に、GC が 100% の CPU 時間を使い果たしていることがわかりました。問題は、一度に 20 MB をリークする「オブジェクト リーク」でした。最終的に GC は試行を断念し、メモリを使い果たしました。

perfmon を使用してこれを実行している時間を確認できます。かなりの数のカウンターを持つ GC オブジェクトがあります。

于 2008-12-28T21:41:23.590 に答える
0

まず最初に、私のトリック ニーが機能していません。それが起こった場合は、雪が降ろうとしているか、誰かが StringBuilder を使用する代わりに文字列連結に多くの「+」演算子を使用していることを意味します。 .

ANTS プロファイラーはどうですか?少し前に使っていて気に入っていました。独自のデータを取得するために使用できるプロファイリング APIもあります。

于 2008-12-19T01:50:15.690 に答える