6

IIS 7.5 と SQL Server 2010 の両方を実行する専用サーバーを取得しました。サーバーの CPU 負荷は、多くの場合 100% 近くです。SQL サーバーはそれほど多くは使用しませんが、w3wp プロセスは大量の CPU (多くの場合 70% 以上) を使用しています。

このプレッシャーの原因を突き止めたい: * 静的ファイルのリクエストが多すぎる (CDN を追加できる) * ajax リクエストが多すぎる (とにかくコメット/Web ソケットについて考えている) * 単一の asp.net ページ処理能力の消費が多すぎる (最適化は簡単なはずです)

最適化を開始する場所を見つけるために、どこから探し始めますか?

4

4 に答える 4

1

最も簡単な方法は、本番環境でアプリをプロファイリングすることです。あなたのケースでそれが可能かどうかはわかりません。いくつかのオプション:

  • ログを調べて、リクエストの期間を調べます。長いリクエストはシステムに負荷をかける可能性があります
  • Visual Studio で w3wp をリモート デバッグし、デバッガーを 10 回一時停止して、最も停止する場所を確認します。そこがホットスポット
  • XPerf または PerfView を使用して (管理された) スタックをキャプチャします。これは生産パフォーマンスにほとんど影響を与えません
于 2012-06-24T12:40:10.687 に答える
0

サーバーで何が起こっているかを確認する簡単な方法を見つけました。それにもかかわらず、専門的な方法は、プロファイリング ツールを使用することです。

私は何をしましたか?IIS コンソールでは、現在のすべてのワーカー スレッドのリストを取得できます。そのうちの 1 つを選択すると、このスレッドが何を処理しているかを確認できます。そのため、スレッドが 100 件のリクエストを並行して処理していることを確認できました。そのうち 70 件は同じ ajax 呼び出しにトレース バックしていました。

当面の解決策は、その呼び出しの頻度を減らすことでした (10 秒ごとから 30 秒ごとに)。次のステップは、サーバー側で呼び出しをさらに最適化することです。これは、同じ頻度 (10 秒ごと) の他の ajax 呼び出しが非常に高速であるため、アクティブな要求リストにほとんど表示されないためです。

于 2012-06-27T03:42:39.823 に答える
0

良い出発点は、開発ツール (IE/Chrome では F12 キー) を起動し、[ネットワーク] タブでタイミングを確認することです。これにより、ページがどのように読み込まれたかを示すウォーターフォール スタイルの図が表示され、CDN に適切に移動される可能性のある特に読み込みが遅い静的ファイル、不要なリクエストが行われていること、取得に費やされている時間を特定するのに役立ちます。実際のページ自体など

その後、パフォーマンス プロファイラーを使用してアプリケーションをプロファイリングします。ANTS Performance Profilerのような優れたプロファイラーを使用すると、さまざまなメソッドの実行時間やヒット数、実行されているデータベース クエリとその所要時間などを確認できます。ANTS の新しいバージョン (現在はEAPにあります) は、そのアクティビティを http リクエストごとにグループ化するため、特定のページを最適化する必要があるかどうか、またはヒット回数が多すぎるかどうかを確認できます。

また、キャッシュが意図したとおりに機能していることを確認して、ユーザーが不必要にページを再リクエストしないようにすることもお勧めします。

http://aspalliance.com/1533_ASPNET_Performance_Tips.7には、ASP.NET のパフォーマンスに関する優れた記事もあります。

免責事項: 私は、ANTS を作成する Red Gate で働いています。

于 2012-06-25T17:15:02.830 に答える
0

おそらく、それを理解する最も簡単な方法は、サーバーにNew Relicをインストールすることでしょう。試用版は 30 日間続くので、この問題の根底にたどり着くのに十分な時間があるはずです. 長時間実行される SQL クエリ、.NET メソッド、および考えられるその他のほぼすべてが表示されます。これにより、ボトルネックの特定が非常に簡単になります。


ちなみに、あなたの問題は本番環境にあるように聞こえるので、New Relic を提案しました。New Relic は、信じられないほど詳細なプロファイラーではありません。役立つ情報を十分に収集しますが、サーバーの速度を低下させるほどではありません。そのため、この目的に適しています。

ただし、開発環境で問題を再現できる場合は、無料のEqatec プロファイラーなどを試すことができます。

于 2012-06-24T12:53:13.337 に答える