none
異常に長い文字列を1行で書いてあるページの表示による長時間高負荷・応答なし発生について RRS feed

  • 質問

  • 特定のページにて、IEが高負荷状態になる現象が発生しています。

    原因として考えられるのは推測ですが、異常に長い行があると起こるようです。

    セキュリティ上は問題ないのでしょうが、PCに高負荷をかけ応答なしやハードへの負荷など

    悪用による二次的被害も考えられます。

    現在確認しているのはIE7,IE8betaです。

    回避する方法がもしあれば教えていただきたく投稿しました。

    もし回避不能でしたらマイクロソフト様に修正対応をお願いしたいです。

    よろしくお願いいたします。

     

    (問題が発生するページ)

    http://ja.wikipedia.org/w/index.php?title=%E5%B9%B3%E9%87%8E%E7%B6%BE&oldid=18010651

    ※高負荷・応答なしが発生します。注意してください。

     

    ----------

    (追記)2008/11/22 06:20

    Wikipediaの内容が不適切なので下記投稿の実験用HTMLにて実験してください。

    原因と思われる内容が判明しましたので、件名を変更させていただきました。

    2008年11月20日 9:27

回答

  •   こんばんは。五寳です。
    RC1 一歩手前の Windows7 IE8 (Core2Duo 1.8Ghz + 2GB メモリ) で確認したところ、

    OK.html のほうは、特に問題なく表示され、スクロール時も負荷はほとんど見受けられませんでした。
    NG.html のほうは、一瞬CPU が 50% ぐらいに行きますが、表示後のスクロールでもスクロール中だけ 50% 到達するかしないか?という動作になりました。

    念のため FF3 と Safari でそれぞれ試しましたが、大体同じような負荷状況でした。

    長時間の高負荷状態というのは、どのくらいの時間をさしていますか?

    また、みなさんの Win7 IE8 や RC1 ではどうでしょうか?

    五寳
    2009年2月13日 8:43

すべての返信

  •  narita23 さんからの引用

    (問題が発生するページ)

    http://ja.wikipedia.org/w/index.php?title=%E5%B9%B3%E9%87%8E%E7%B6%BE&oldid=18010651

    ※高負荷・応答なしが発生します。注意してください。

     

    別人ですが因みに、このページは Trident 固有の問題というわけではなく Luna の

    WebKit(QtWebKit) でも同様にフリーズすることを確認しています。

    Gecko(Mozilla ActiveX Control) では再現しないみたいです。

    Opera(Presto) は現時点では確認していません。

    2008年11月20日 18:43
  • テスト不足申し訳ありませんでした。

    当方IE(+Sleipnir)とFirefoxしか入れていないので他のエンジンのテストができませんでした。

    ページ側に問題があると言われればそれまでですが、

    Trident側で何か対策がされる事を強く望みます。

    他のエンジンでの検証をして頂きありがとうございました。

    2008年11月20日 19:04
  • かなり時間がかかりますが、さわらなければ、表示されることを確認しました。別タブを表示しておくなどで回避可能です。

    Vista SP1 + IE8 beta2 (CPU: Intel vPro 2.6GHz Mem:2GB)

    また、Opera 9.6 では応答なしなどの問題はありません。

     

    なんていうか、編集対象でしょうから、検証ページとしては不適ですな

     

    2008年11月20日 23:40
  • 返信ありがとうございます。

    まず、該当ページが検証用として、そして内容的に不適切だった事をお詫びします。

    ただあのページしか再現できる所がなかったもので…申し訳ありません。

    さわらなければ高負荷状態が収まるとの検証ありがとうございます。

    確かに何もしなければ負荷は収まりますが、スクロールなどで該当箇所にさしかかると負荷がかかりますね。

     

    あのページのどこがあれだけの高負荷を長時間掛けているのか、解析等はせず憶測で原因を述べていますが、

    この原理を応用し悪用すれば利用者(特に初心者)にはフリーズしたと思わせる事も出来てしまうとおもうのです。

    この点からも悪用される前にTridentとして高負荷状態にならないよう対策してもらえないかと思った次第であります。

     

    ----------

    (追加編集)2008/11/22 06:20

    該当ページの問題のある部分のソースを見た結果、

    改行無しで全角文字約135000字(270000byte)の文字列が1行で書いてありました。

    簡単なHTMLに同様に改行無しで全角文字約135000字(270000byte)の文字列を入れて開いた所、同様の現象が起きました。

    スクリプト等無しに簡単に再現されてしまうのはやはり問題だと思うのです。

    2008年11月21日 0:55
  •  infade さんからの引用

     

    別人ですが因みに、このページは Trident 固有の問題というわけではなく Luna の

    WebKit(QtWebKit) でも同様にフリーズすることを確認しています。

    Gecko(Mozilla ActiveX Control) では再現しないみたいです。

    Opera(Presto) は現時点では確認していません。

     

    追記、 WebKit 本来の Safari 3.0.2 for Windows で確認したところでは、

    フリーズを確認できませんでした。

    (PC の環境が異なるため、環境依存の可能性もあります)

     

    ただ、 IE 6.0 (SP2) と IE 8 ではどちらともフリーズを確認しています。

    ページ自体の容量がかなりあるようなのでそれも原因の一つとは

    なり得ているようですが、それでも今回のは IE のレンダリング速度と

    レスポンスが特に大変悪いようですね。

     

    Opera とFxでは同様にフリーズを確認できませんでした。

    (表示にほんの少しだけ時間がかかりますがフリーズするほどの問題は

    発生しませんでした)

     

    WebKit に関しては確認している環境が2台のみで、しかも QtWebKit と

    WebKit 本体という違いがありますので参考にするには若干弱いかも

    知れません。

    2008年11月21日 10:46
  • infadeさん、検証ありがとうございます。

     

    当方にて実験用HTMLを作りました。

    その際、文字によっては容量が大きくても大丈夫な場合がある事が分かりました。

    Wikipediaの内容が不適切なので、下記サンプルにて実験してみてください。

    どちらも同じ容量ですが、挙動が違います。

     

    「ああ」の連続(270,485byte):長時間の高負荷無し・スクロール時の負荷無し

    http://narita23.web.fc2.com/test/ok.html

    「試し」の連続(270,485byte):長時間の高負荷有り・スクロール時の負荷有り

    http://narita23.web.fc2.com/test/ng.html

    2008年11月21日 14:14
  • 悪用される前にTridentとして高負荷状態にならないよう対策してもらえないかと思った次第であります。

    これには賛成です。

    2008年11月23日 11:43
  •   こんばんは。五寳です。
    RC1 一歩手前の Windows7 IE8 (Core2Duo 1.8Ghz + 2GB メモリ) で確認したところ、

    OK.html のほうは、特に問題なく表示され、スクロール時も負荷はほとんど見受けられませんでした。
    NG.html のほうは、一瞬CPU が 50% ぐらいに行きますが、表示後のスクロールでもスクロール中だけ 50% 到達するかしないか?という動作になりました。

    念のため FF3 と Safari でそれぞれ試しましたが、大体同じような負荷状況でした。

    長時間の高負荷状態というのは、どのくらいの時間をさしていますか?

    また、みなさんの Win7 IE8 や RC1 ではどうでしょうか?

    五寳
    2009年2月13日 8:43
  • 五寳 匡郎 の発言:

      こんばんは。五寳です。
    RC1 一歩手前の Windows7 IE8 (Core2Duo 1.8Ghz + 2GB メモリ) で確認したところ、

    OK.html のほうは、特に問題なく表示され、スクロール時も負荷はほとんど見受けられませんでした。
    NG.html のほうは、一瞬CPU が 50% ぐらいに行きますが、表示後のスクロールでもスクロール中だけ 50% 到達するかしないか?という動作になりました。

    Vista + IE8 RC1 で、同様であることを確認しました。


    Jitta@わんくま同盟
    2009年2月17日 3:06
  • 私の所は IE7 なんですけど、同じように 漢字入りは 時間がかかりました。
    編集ソフトで開いたら エンコーディングが「不明(Shift_Jis)」と出たので、試しに 他のエンコーディングで 保存してみました。

    結果、UTF-8 など 文字辺りのバイト サイズが固定されていないものは 読み込みに時間がかかって、Unicode など 固定バイト数のものは 素早く表示できました。

    漢字だと 文字あたりのバイト サイズが増えるのに 原因がある…気がします;
    2009年3月2日 1:12
  • こんにちは、フォーラムオペレータ大久保です。

    narita23 さん、フォーラムのご利用ありがとうございます。
    本件ですが、改めて手元の Windows Vista SP1 + IE8 正式版 で確認しましたところ、現象発生いたしませんでした。
    無事修正されたようです。(よかったです!)
    皆様のお手元でもご確認ください。

    なお、大変勝手ながら、弊社 五寳 の投稿を「回答としてマーク」させていただきました。
    今後ともフォーラムをよろしくお願いします。

    マイクロソフト株式会社 フォーラム オペレータ 大久保 直美
    2009年3月26日 4:02