2

ASP.NET ワーカー プロセスが断続的に CPU を 100% 使用している状況があります。perfmon の結果とメモリ ダンプを分析したところ、ガベージ コレクタが CPU 時間を大量に使用していることがわかりました。

WinDbg を使用して、LOH が HTML ページの完全なページを含む文字列でいっぱいであることを確認しました。文字列への!gcrootでルートが見つからないことがよくあります。問題は、これが ASP.NET アプリケーションでは正常なのか、それとも Web サイトの構築方法に固有のものなのかということです。

この ASP.NET Web サイトは Sitecore ベースの Web サイトであることに注意してください。Sitecore が HTML 出力をキャッシュすることは理解していましたが、私の理解では、Sitecore はページ全体をキャッシュするのではなく、レンダリング レベルでのみキャッシュします。

4

1 に答える 1

1

特にページバッファがオンの場合(デフォルトではオンの場合)、asp.netはメモリ内にページを構築し、ページが完全にレンダリングされた後に送信されるため、完全なhtmlページがメモリ内にあるのは正常です。ブラウザに。

現在、場合によっては、 page の render 関数を使用してその html を取得し、いくつかの文字列を検索して置換するプログラマーを見てきました。したがって、この場合、完全な html ページもメモリ上で見つけることができます。

ここで、CPU が 100% になっている場合は、クラッシュが続くかどうかを確認してください。そうでない場合は、おそらくそこにいくつかの重い計算があるか、多くのlinq クエリ、または同様のものがあります。

于 2013-02-22T01:46:13.873 に答える