21

アプリケーションの 1 つに問題があります。アプリケーションを実行しましたが、すべて問題ありません。このアプリケーションを閉じると、システム内の「svchost」プロセスの 1 つが CPU の約 95 ~ 100% を占有していることに気付き、何が CPU サイクルを大量に占有しているのかを突き止める必要があります。

私はこれをどのように行うかについて、非常に単純で直接的な目標を設定しました。

  1. プロセス情報または非常に多くの CPU を占有しているこの特定の「svchost」を取得します
  2. 私は svchost プロセスが何に使用されるかを知っているので、それについて説明する手間を省きます。したがって、この不正な svchost によってどのモジュールがロードされているかを知る必要があります。
  3. アプリケーションを実行して閉じ、プロセスがメモリ内ではなく完全に閉じられていることを確認しました。次に、CPU を 100% 使用している svchost の PID を取得しました。
  4. ProcessExplorer (sysinternals から) を実行し、この svchost がホストしているサービスの数とサービスに関する情報を取得しました。それらは約12のサービスです。これらの 12 のサービスのどれが CPU サイクルを占有しているかを特定する方法が気になるので、このリストについては気にしません。
  5. 今、私はリストを持っています。ここからトリッキーな部分が始まります...以下の2つのオプションのうちの1つを実行したいです

オプション 1: これら 12 のサービスのうちどれが CPU を大量に消費しているかを特定するにはどうすればよいですか? この svchost プロセスの拡張情報を取得して、このプロセスでホストされている「サービスごと」の詳細情報を入手できますか?

オプション 2: svchost が svchost のインスタンスごとに 1 つのサービスのみを実行するように Windows を構成することは可能ですか?

この問題の根本原因を絞り込むためのより良い調査方法がある場合は、お知らせください。

4

2 に答える 2

26

I had answered my question but I put it under comments. I am now adding the same as an answer so it is known.

I figured out how to do both the options in my question above:

Solution for option 1:

Open Resource Monitor (resmon.exe), go to CPU tab, check the svchost.exe (with the PID to watch for) under Image tab, go to "services" box and check for the CPU usage by different services.

Solution for option 2:

sc config <service name> type= own

Or change in registry HKLM\System\CurrentControlSet\Services\<ServiceName>\Type to 0x10.

Refer to http://blogs.technet.com/b/askperf/archive/2008/01/11/getting-started-with-svchost-exe-troubleshooting.aspx for more info.

于 2013-01-20T13:53:42.580 に答える
6
  1. リソース モニターの起動

    • リソース モニターをスタート メニューに入力するか、
    • タスク マネージャーの [パフォーマンス] タブにある [リソース モニター] ボタンをクリックします。
  2. リソース モニターの上部にある [CPU] タブをクリックします。

  3. 調べたいプロセスにチェックを入れる(平均CPUでソート)

  4. サービスは、マークしたプロセスによってフィルタリングされ、そのプロセスで実行されている各サービスの CPU 統計が表示されます。

于 2012-04-18T22:15:47.907 に答える