4

ASP.NET Web アプリケーションで一貫して高い CPU 使用率が見られます (当然、ライブ プロダクション ボックスでのみ....!)。原因を絞り込もうとしています。基本的には、クアッド コア Xeon ボックスを使い果たしていますそして、それができるはずはありません!

一般に、Web プロセスの CPU 使用率は、DB プロセスの CPU 使用率よりも高くなります。DB プロセス自体が警鐘を鳴らします (?)。

ただし、標準のプロファイリング ツール (dotTrace、Red Gate など) を使用すると、(実際の CPU 使用率ではなく) 個々のメソッドで費やされた時間のみが表示され、最終的には DB バインドされたメソッドが強調表示されます。これは、キャッシングまたはより良いインデックスの機会を示している可能性がありますが、それ自体が Web アプリケーション プロセスの CPU 使用率を高くすることになるとは思いませんか?

これを絞り込む方法に関する提案やヒントはありますか?

ありがとう!

4

4 に答える 4

3

そもそも試すべきいくつかの提案。

1.リリースビルドを使用した展開展開された製品がリリースモードになっているかどうかを確認します。デバッグモードで実行すると、アセンブリと一緒にpdbをロードするのに多くの時間が無駄になります。

2.ViewStateを無効にする必要がない場合は、viewstateを無効にします。ViewStateは、リクエスト間で永続化される非表示フィールドに格納されたデータに他なりません。提供時と要求時の両方で、ページの総ペイロードが増加します。サーバーにポストバックされるビューステートデータをシリアル化または逆シリアル化するときに発生する追加のオーバーヘッドもあります。最後に、ビューステートはサーバー上のメモリ割り当てを増やします。

3.セッション状態の無効化:

使用しない場合は、セッション状態を無効にします。デフォルトではオンになっています。特定のページまたはアプリケーション全体でこれを実際にオフにすることができます。

基本的なASP.NETアプリケーションのパフォーマンスの監視がいくつかあります。これらの2つのMSDNの記事 「ASP.NETアプリケーションのパフォーマンスの監視」ASP.NETのパフォーマンスカウンターを確認してください。

于 2009-07-22T17:08:20.913 に答える
0

Pradeepnoが指摘しているように、最初の場所は実際にはパフォーマンスカウンターです。これらは、CPUのどの部分を何が消費しているかについて非常に良いアイデアを提供します。

Webアプリの使用量がDBの使用量よりも多いことは、まったく驚くべきことではありません。あなたがまともなデータベース設計をしているなら、ほとんどのウェブアプリはまともなパワーのDBサーバーに汗を流すことはほとんどありません。

于 2009-07-27T00:34:39.377 に答える
0

いくつかの単体テストをセットアップして、さまざまなメソッドを呼び出し、それらがプロセッサの使用にどのような影響を与えるかを確認できますか? Team System を使用している場合、Visual Studio にはいくつかのテスト ツールが組み込まれていますが、使用していない場合でも、特定の関数を何百回も呼び出すマルチスレッド テスターを作成できます。

これを行う方法についての指針が必要な場合は、基本的な単体テストの作成をお手伝いできます。

于 2009-07-19T22:21:02.120 に答える
0

未処理の例外を記録/報告していますか? そうでない場合は、それらのいずれかが高い CPD スパイクに対応しているかどうかを確認してください。スタック オーバーフローが原因でスパイクが発生している可能性があります。

http://msdn.microsoft.com/en-us/library/ms998306.aspx

また、HttpModule を使用して各リクエストの時間を記録し、問題の原因となっているページを示す可能性のある最も多くの時間を費やしているリクエストを確認することもできます。

于 2009-07-27T00:10:47.640 に答える