web-dev-qa-db-ja.com

どうすればIIS CPUを100%使用率に押し上げているかを診断できますか?

いくつかのASP.NETサイトが実行されているWebサーバーがあります。 IISがサーバーのCPUを100%に押し上げていることに気付くことがよくあります。サイトは、実行している.NETバージョンごとにアプリケーションプールを共有しています。

私が探しているのは、いくつかのツールを使用して、これを実行しているサイトを正確に特定できる方法です。そのツールがたまたまそれを表示するためにコードに侵入した場合、それも素晴らしいでしょう。そうでない場合は、どのサイトが問題を引き起こしているのかを知ってうれしいです。

私はすでにANTSを使ってみました。ただし、ANTSを使用する場合は、それがどのサイトであるかを知ってから、CPUをクラッシュさせるWebアプリを実行して待機する必要があります。完全に理想的ではありません。

何か経験/アイデアはありますか?

1
Micah

私はここでまったく同じ質問に答えました: IIS6 CPUスパイク

以下は私の答えからのテキストです:

アプリプールはいくつですか? Webサイトを個別のアプリプールに移動し、タスクマネージャーとコマンドラインiisappを使用して、どのアプリプールがどのタスクに一致するかを一致させることから始めることができます。これは、どのWebから始めるかを特定するのに役立ちます。

それを特定したら、Microsoft IISデバッグツール: http://www.Microsoft.com/download/en/details.aspx?id=26798

次に:

IISデバッグ診断を使用して、II6でのワーカープロセスのCPU使用率のトラブルシューティングを行う

IIS7で失敗したリクエストのトレースは、Webサイトの多くのパフォーマンスの問題を追跡するのに役立ちますが、IIS6にはまだ幅広い顧客ベースがあります。 IIS6のパフォーマンスの問題のトラブルシューティングは、Microsoftがスタックトレースの分析に関するより深い洞察を提供する一連のツールをリリースするまで、非常に困難でした。

IIS Debug Diagnostics Toolは、ワーカープロセスからCPUとメモリの問題を追跡するのに役立ちます。Microsoftには、基本についても説明しているNice kbの記事があります。 http:// support .Microsoft.com/kb/919791

  1. IISデバッグ診断をシステムにローカルにインストールします。

  2. [スタート]> [プログラム]> IIS診断> [デバッグ診断ツール]> [デバッグ診断ツール]]で[デバッグ診断ツール]を開きます。

  3. [ツール]> [オプションと設定]> [パフォーマンスログ]タブをクリックします。 [パフォーマンスカウンターデータログを有効にする]オプションを選択します。 [OK]をクリックします。

  4. タスクマネージャーを使用して、ワーカープロセスのPIDを見つけます。

  5. [プロセス]タブを選択し、リストからプロセスを見つけます。

  6. プロセスを右クリックして、「フルユーザーダンプの作成」を選択します。これには数分かかり、ダンプファイルへのパスを示すボックスがポップアップ表示されます。

  7. [高度な分析]タブを選択し、[データファイルの追加]ボタンをクリックします。ジャンプで作成されたダンプファイルを参照し、[OK]をクリックします。

  8. CPUパフォーマンスとクラッシュ分析のために、[利用可能な分析スクリプト]ボックスから[クラッシュ/ハングアナライザー]を選択します。 [分析の開始]をクリックします。

数分後、スタックトレース情報と、90秒を超えて実行されたリクエストに関する情報を含むレポートが生成されます。数百メガバイトのスペースを使用するメモリダンプに注意してください。十分なデバッグスペースのあるドライブにツールをインストールしてください。また、ボックスに大きな負荷がかかっている場合は、システムにユーザーダンプを作成し、ファイルをワークステーションにコピーして、ローカルで分析を実行できます。

3
Dave Holland

一部の人々は良い習慣を考え、ウェブサイト/アプリケーションごとにアプリプールを作成して、ウェブサイトを再起動する必要があるときに他の人に影響を与えないようにします。同様に、Webサイトごとに新しいIISワーカープロセスw3p.exeを作成します。そうすることで、各サイトのCPUのピークをより簡単に監視できると思います。

次に、CPU使用率を詳細に確認するには、たとえば、MiscrosftSysinternalのProcessExplorerを使用できます http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx これは無料ですあなたが見ている情報を集めることができるツール。

私のヒントが何らかの形でIISの問題のトラブルシューティングに役立つことを願っています。

3
byte_slave

これには非常に簡単な方法があります。少なくともIIS8では、これがIIS6に存在するかどうかはわかりません。とにかく役に立つと思います。

  • IISに移動します
  • 左側でサーバーを選択します
  • アイコンワーカープロセスをクリックします
  • アプリケーションごとのCPU /メモリを参照してください

Worker Processes

0
RayofCommand