none
CPU使用率が高いiexplorer.exeに悩まされています。

    質問

  • お世話になります。
    山品@イッツアップです。

    Windows2012 R2上のInternet Explorer 11をRemoteApp設定して使っています。
    同時使用ユーザが50以上、iexplore.exeは同時に200以上動いています。
    CPU使用率が高めの調子の悪いiexplore.exeが2, 3プロセス出てくると、CPU使用率が100%になり全体に影響が出て困っています。
    Internet Explorerではインターネット上のWWWを閲覧しています。
    アドオンは、Adobe reader、Flash、Javaを追加しているだけです。
    一部フォルダ(DownloadsやDesktop等)は、ファイルサーバにフォルダリダイレクトしている。

    調子の悪いiexplore.exeの傾向として次のような事に気づきました。

    • 長時間開きっぱなしのiexplore.exeで発生している。
    • 数分で回復するという事はない。ユーザが離籍中(操作をしていない状態)でも、高負荷状態が続く。
    • 1ユーザで複数のiexplore.exeを起動しているが、調子の悪いのは1つのiexplore.exeだけ。
    • タスクマネージャーで、待機チェーンの分析をすると何か待機しているものが表示される。(いまのところネットワークI/Oだけ)
    • 待機チェーンの分析をした後、CPU使用率が0になったりプロセスが終了済みになり復旧する事がある。

    現在は、「CPU使用率の高いユーザをサーバ管理者が調べ、順次ログオフさせる」作業を、CPU使用率がアラート閾値未満になるまで繰り返し行っており、運用負荷になっています。
    CPUのリソースを食いつぶされる前に駆除する方法や、調子の悪いiexplore.exeを出さない方法があればご教授ください。

    よろしくお願いします。

    • 編集済み YAMATOMO 2018年6月4日 7:22
    2018年6月4日 7:07

すべての返信

  • >長時間開きっぱなしのiexplore.exeで

    長時間というのは具体的にどのくらいの時間なのでしょう?

    数時間であればともかく、数日というようなレベルであれば IE 自体の使い方の問題ということになるかもしれません。


    hebikuzure

    2018年6月4日 7:26
    モデレータ
  • > タスクマネージャーで、待機チェーンの分析をすると何か待機しているものが表示される。
    > (いまのところネットワークI/Oだけ)


    これ重要。
    多分なんかのサービス プロセス間で、競合を起こしているんだと思います。
    どのスレッド間 (あるいはプロセス間) で競合を起こしているのかをきちんと調べれば、対処方法が見つかるかも。
    まずは現象発生時に待機チェーンの分析で表示される PID と TID を確認し、PID がどのプロセスに該当するのかを確認することをお勧めします。
    待機チェーンの分析で表示される PID に対応するプロセスが "svchost.exe" だったら、プロセス ダンプ等を採取してどのサービスに対応しているのかを調べ、必要性の低いサービスだったら止めてみるとか。
    とにかくこの手の問題の原因は千差万別だから、きちんと原因を調べる必要があると思います。

    ちなみに、Windows Update はきちんと行っていますか?

    2018年6月4日 7:55
  • 数時間です。
    9時出社後にIEを立ち上げて、そのまま退社時まで開きっぱなしというユーザが多いです。
    早いと昼過ぎから、多いのは夕方にかけて、CPU使用率が100%から下がらなくなります。
    (RemoteAppは翌日まで開きっぱなしにはならないようになっています。)

    問題と思われるプロセスのPIDが数千番台と古い事が多いのと、ユーザの席までIEを終了するようお願いに行くとIEは最小化して使ってないこともよくあります。


    • 編集済み YAMATOMO 2018年6月4日 8:45
    2018年6月4日 8:43
  • 情報が小出しですみません。

    20~30個のiexplore.exeで待機チェーンを発見し、ほとんどはiexplore.exe自体のPIDでスレッドも1つ。
    2, 3個、自分のPIDで2~3スレッドの事もありました。
    svchost.exeは出てきたことはありません。
    (待機チェーン分析で何も表示されない正常なものが大多数です。)

    WindowsUpdateは、最新です。


    • 編集済み YAMATOMO 2018年6月6日 3:30
    2018年6月4日 8:56
  • 状況がよくわからないのですが。。。。。
    例えば、現象が発生している状態で Task Manager の [詳細] タブで "CPU" カラム (CPU の使用率)でソートしたときに、特定の PID の iexplore.exe プロセスが 100% 近い (80% とか) CPU 使用率で張り付くんですよね? 
    その時の、一番 CPU 使用率が高い PID の iexplore.exe プロセスで、待機チェーンはどのように表示されるのですか?
    (重要な部分の情報をはしょるから、肝心な部分が見えない。。。。)

    > (待機チェーン分析で何も表示されない正常なものが大多数です。)
    それらプロセスの CPU 使用率は低いのでは?
    多分、0 とかそれに近い値だと思うのですが、違うのでしょうか?
    もしかして、プロセス毎の CPU 使用率がどーなっているのかを確認していない?

    2018年6月4日 9:14
  • タブブラウジング機能がついてからというもの,タブをいくつも開いた状態でieを最小化しておいただけでも解放してくれないため,困ったことがあります。

    マメにieを終了してもらって,起動してもらうようお願いしたほうがいいのではないかなという気がしますね・・・

    Windows2012ではネットワーク接続数が超過するとぐんと動作が落ちるという現象を何度か経験しました。

    2018年6月4日 9:25
  • CPU100%状態の画像を貼り付けます。
    TOP 10で待機チェーンがあるのは、この一つだけでした。
    このプロセスを終了しても100%は続いたので、待機プロセスは関係ないかもしれません。

    今回はCPU使用率が高いユーザを1名ログオフするだけで、60~80%までCPU使用率は落ちました。
    CPUはXeon 2個なので非力なのかもしれませんが、重いIEがなければ丁度よいキャパなので、
    サーバ追加は難しいです。(コネクションサーバを使い、RemoteAppサーバは複数台で構成されています。)
    DiskやNetworkのメーターも振り切れてますが、使用率としては低いので問題ないと思います。

    https://social.technet.microsoft.com/Forums/getfile/1278946


    • 編集済み YAMATOMO 2018年6月5日 6:27
    2018年6月5日 6:19
  • 添付されているリソース モニタのスクリーンショットでは、PID 18008 iexplore.exe プロセスの CPU 使用率は8%なので、このプロセスのが CPU100%の原因とは考えにくいです。
    リソース モニタからだと、System Process や Idle Process の状態が確認できません。
    なのでリソース モニタからの確認ではなく、タスクマネージャーから確認してもらえますか?
    タスクマネージャー [詳細] タブから <列の選択> で "CPU" をチェックし、"CPU" カラムを表示させてソートすれば、もっと CPU を占有しているプロセスがいるはずです。
    (このスナップショットを見る限り、System Process が CPU リソースを食いつぶしているのでは。。。と思うのです。)

    > DiskやNetworkのメーターも振り切れてますが、使用率としては低いので問題ないと思います。
    タスク マネージャーで、Disk I/O が高いプロセスと Network I/O が高いプロセスも併せて確認してみてください。

    2018年6月5日 7:08
  • CPU使用率100%で張り付いていてこんな感じです。
    IEのプロセスが200以上動いているので。

    https://social.technet.microsoft.com/Forums/getfile/1279544

    2018年6月6日 3:31
  • > IEのプロセスが200以上動いているので。

    すみません、↑これ、見落としていました。
    (最初の質問の、一番初めに書いてありましたね。。。。)

    これはいかんともしがたいような。。。
    今回のケースでは iexplorer.exe でのみ発生しているようですが、同様の現象が他のアプリで発生する可能性もあるわけだし。
    1つのプロセスが継続して10%程度の CPU リソースを占有し続けることは確かに問題といえば問題だけど、際立って独占しているわけではないし、デッドロックを起こしているわけでもないし、ハングしているわけでもないし。。。
    IE についてのみであれば、レジストリの "ReceiveTimeout" 値あるいは "KeepAliveTimeout", "ServerInfoTimeout" を短くしてみるとか。。。
    -------------------------------------
    Internet Explorer の既定の Keep-Alive タイムアウト値を変更する方法
    https://support.microsoft.com/ja-jp/help/813827
    -------------------------------------

    2018年6月6日 8:11
  • 1つのプロセスが継続して10%程度の CPU リソースを占有し続けることは確かに問題といえば問題だけど、際立って独占しているわけではないし、デッドロックを起こしているわけでもないし、ハングしているわけでもないし。。。

    例えば8コア16スレッドのマシンでは6%で1スレッドを占有している計算になります。スピンロックでCPUを浪費しているとかいろいろ考えられるかと。

    2018年6月6日 8:34
  • IE のプロセス数を減らすのであれば

    HKCU\Software\Microsoft\Internet Explorer\Main

    の TabProcGrowth DWORD値を 0 にするとか。それで現象が抑止できるかどうかは分かりませんが(できないような気がします)。


    hebikuzure

    2018年6月6日 12:49
    モデレータ
  • > スピンロックでCPUを浪費しているとかいろいろ考えられるかと。

    確かにいろいろ考えらると思いますが、個人的には、今回のケースではスピンロックはないと考えています。
    スピンロックの影響でこの問題が発生しているのであれば、2つ以上のスレッド間で排他制御が行われていることになるので、「待機チェーンの分析」でのスレッド表示が1つだけという状況にはならないと思うのです。

    > IE のプロセス数を減らすのであれば
    試す価値はあると思いますが、この問題が単純に起動している「プロセス数」に影響しているのであれば、IE のプロセス数を減らしても「別アプリ」のプロセス数が影響してくる可能性が考えられると思うので、その際には「別アプリ」の起動プロセスの数を増やした時にどうなるかも、併せて検証したほうがいいと思います。
    ちなみに私が "ReceiveTimeout", "KeepAliveTimeout" に言及したのは、「プロセス数」の影響ではないのかも。。。。と考えたからです。
    質問者さん曰く「CPU使用率が高めの調子の悪いiexplore.exeが2, 3プロセス出てくると、CPU使用率が100%になり全体に影響」とのことなので、(実際の真偽はわかりませんが) これがホントだとすると、問題は「プロセス数」ではなく「ネットワーク I/O の遅延」の可能性の方が高いのでは。。。と思うのです。
    もちろん本現象が「IE だけのプロセス数」に起因している可能性も否定しませんが、その場合のシナリオが私には思い浮かびませんでした。

    いずれにせよこの問題を本気で解決したいのであれば、いきなり回避策を求めるのではなく、もっと突っ込んだ調査を行う必要があると思います。
    あくまでも私見ですが。。。
    現象発生時の完全メモリ ダンプを数個採取して、CPU リソースを食いつぶしている IE プロセスの処理に共通点がないか、およびそのプロセス以外に Kernel Time の占有時間の長いプロセスが存在していないか、待機時間が異常に長いプロセスが存在しないか等を確認すれば、問題部分が絞りこめる。。。かも。
    ただ、完全メモリ ダンプはシステム クラッシュ (BSOD) させないと採取できないので、本件の調査には向いてない。。。というか、無理かもですね。
    とりあえずは、現象発生時に CPU 占有率の高い IE のプロセス ダンプを複数個採取して、その状態に共通点がないか確認してみては?

    2018年6月7日 1:52
  • 私もこの意見に賛成です。IE のプロセス数を減らしてみるというのは一般的な対応としてはありうるのですが、「(現象の回避は)できないような気がします」と書いたように私も単純なプロセス数の問題でこの現象が起きるようなシナリオを想定できません。

    最初の質問に戻れば、50ユーザー程度が1サーバーを RemoteApp で共用しているという状況ですが、そもそもそのサーバーのスペックはどの程度なのでしょう。またこのサーバーから(IE が接続先にしているであろう)ネットワークはどうつながっているのでしょう。

    その辺りも含めたより詳しい情報があれば、また何かアドバイスできることが出てくるかもしれません。


    hebikuzure

    2018年6月7日 4:43
    モデレータ
  • たくさんのコメント感謝します。

    サーバは次の物理サーバ上に、(他のサーバ管理者の意向で)ESXi 5.1をかましてゲストOS 1台で運用しています。
    CPU:Xeon E5-2603v3 2個 → 力不足は否めない
    RAM:128GB → 余っている
    Disk:RAID1+0(SAS 10krpm 4本) → IOPSは余裕あり
    NIC:1G × 6 (ゲストOSでインターネット向けに使っているのは、1G 1本) → 余裕あり

    インターネット接続は、ProxyやFirewallを介して100Mbpsで接続しています。
    問題発生時、他のRemoteAppサーバでインターネットアクセスが遅いと感じたこともなく、
    トラフィックは監視しているので問題ないと考えています。

    RemoteAppサーバから見るとこんな感じです。
    https://social.technet.microsoft.com/Forums/getfile/1280074

    2018年6月7日 6:35
  • 別の問題かもしれませんが、調子の悪いと思しきiexplore.exeで待機チェーンの分析をすると、プロセスが終了してしまうことが度々あります。

    添付の画像の例だと、PID 5484は直前まで高負荷でしたが、待機チェーンの分析を実行して終了済みになっています。
    何度か繰り返していたら、ユーザからIEのタブが勝手に閉じていたと言われたので、ユーザがタブを閉じた偶然が重なっているのではなさそうです。

    全体のCPU負荷が100%の時は、半分ぐらいの高い確率で勝手に終了が起きます。低負荷の場合は、ほとんど起きません。
    このこともあり、単なるCPU能力不足と諦められず、なんかIE怪しいと投稿しているしだいです。

    https://social.technet.microsoft.com/Forums/getfile/1280097

    2018年6月7日 7:19
  • (6 core / 6 thred)* 2 ですか。そこの力不足というのは一番の原因かもしれませんね。

    ネットワークについてはスループットやレイテンシより、プロキシや NAPT のセッション不足が影響してないか、という意味合いです。


    hebikuzure

    2018年6月7日 7:48
    モデレータ
  • > 別の問題かもしれませんが、調子の悪いと思しきiexplore.exeで待機チェーンの分析をすると、
    > プロセスが終了してしまうことが度々あります。
    そのとき、アプリケーション ログに iexplore.exe のエラー ログが記録されているでしょうか?
    記録されているなら、その詳細情報を教えてください。

    > このこともあり、単なるCPU能力不足と諦められず、なんかIE怪しいと投稿しているしだいです。
    私はこれよりもはるかに性能の低い PC で Windows 10 x64 を動かしていますが、待機チェーンの分析でプロセスが落ちるなんて今まで経験したことがないので、私もそんな気がしてきた。
    (目茶目茶遅いですけど、プロセスが落ちるような問題は起きない。)

    ちなみに、プロセス ダンプを採取して解析してみる「根性」はありますか?
    きちんと調査しない限り、回避策を見つけるのは難しいかと。。。。
    (もっとも、ダンプ解析をしても、原因を特定できる保証もありませんけど。)


    2018年6月7日 8:53
  • 高負荷であっても待機チェーンの分析でiexplore.exeが落ちるのはおかしいとうかがい、まずはこの件をMSに問い合わせることにしました。
    (この問題修正の副作用としてIEが少しでも軽快になることを期待しつつ。)
    ありがとうございました。

    画面キャプチャしたPID 5484 (0x156c)で検索したところ、次のイベントログが残っていました。

    ログの名前:         Application
    ソース:           Application Error
    日付:            2018/06/06 10:59:25
    イベント ID:       1000
    タスクのカテゴリ:      (100)
    レベル:           エラー
    キーワード:         クラシック
    ユーザー:          N/A
    コンピューター:       server
    説明:
    障害が発生しているアプリケーション名: IEXPLORE.EXE、バージョン: 11.0.9600.18817、タイム スタンプ: 0x59b18749
    障害が発生しているモジュール名: ntdll.dll、バージョン: 6.3.9600.18895、タイム スタンプ: 0x5a4b127e
    例外コード: 0xc0000005
    障害オフセット: 0x000b7df6
    障害が発生しているプロセス ID: 0x156c
    障害が発生しているアプリケーションの開始時刻: 0x01d3fd2a51836d68
    障害が発生しているアプリケーション パス: C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE
    障害が発生しているモジュール パス: C:\Windows\SYSTEM32\ntdll.dll
    レポート ID: 3c8eded4-692d-11e8-8109-000c295084c5
    障害が発生しているパッケージの完全な名前:
    障害が発生しているパッケージに関連するアプリケーション ID:

    2018年6月14日 6:04
  • > 例外コード: 0xc0000005
    STATUS_ACCESS_VIOLATION 。。。。つまりメモリ アクセス違反ですね。
    これが原因なら、待機チェーンとか関係ないし。

    2018年6月14日 7:04