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

質問
-
特定のページにて、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にて実験してください。
原因と思われる内容が判明しましたので、件名を変更させていただきました。
回答
-
こんばんは。五寳です。
RC1 一歩手前の Windows7 IE8 (Core2Duo 1.8Ghz + 2GB メモリ) で確認したところ、
OK.html のほうは、特に問題なく表示され、スクロール時も負荷はほとんど見受けられませんでした。
NG.html のほうは、一瞬CPU が 50% ぐらいに行きますが、表示後のスクロールでもスクロール中だけ 50% 到達するかしないか?という動作になりました。
念のため FF3 と Safari でそれぞれ試しましたが、大体同じような負荷状況でした。
長時間の高負荷状態というのは、どのくらいの時間をさしていますか?
また、みなさんの Win7 IE8 や RC1 ではどうでしょうか?
五寳- 回答としてマーク 大久保直美Microsoft employee 2009年3月26日 4:01
すべての返信
-
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) は現時点では確認していません。
-
返信ありがとうございます。
まず、該当ページが検証用として、そして内容的に不適切だった事をお詫びします。
ただあのページしか再現できる所がなかったもので…申し訳ありません。
さわらなければ高負荷状態が収まるとの検証ありがとうございます。
確かに何もしなければ負荷は収まりますが、スクロールなどで該当箇所にさしかかると負荷がかかりますね。
あのページのどこがあれだけの高負荷を長時間掛けているのか、解析等はせず憶測で原因を述べていますが、
この原理を応用し悪用すれば利用者(特に初心者)にはフリーズしたと思わせる事も出来てしまうとおもうのです。
この点からも悪用される前にTridentとして高負荷状態にならないよう対策してもらえないかと思った次第であります。
----------
(追加編集)2008/11/22 06:20
該当ページの問題のある部分のソースを見た結果、
改行無しで全角文字約135000字(270000byte)の文字列が1行で書いてありました。
簡単なHTMLに同様に改行無しで全角文字約135000字(270000byte)の文字列を入れて開いた所、同様の現象が起きました。
スクリプト等無しに簡単に再現されてしまうのはやはり問題だと思うのです。
-
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 本体という違いがありますので参考にするには若干弱いかも
知れません。
-
infadeさん、検証ありがとうございます。
当方にて実験用HTMLを作りました。
その際、文字によっては容量が大きくても大丈夫な場合がある事が分かりました。
Wikipediaの内容が不適切なので、下記サンプルにて実験してみてください。
どちらも同じ容量ですが、挙動が違います。
「ああ」の連続(270,485byte):長時間の高負荷無し・スクロール時の負荷無し
http://narita23.web.fc2.com/test/ok.html
「試し」の連続(270,485byte):長時間の高負荷有り・スクロール時の負荷有り
-
こんばんは。五寳です。
RC1 一歩手前の Windows7 IE8 (Core2Duo 1.8Ghz + 2GB メモリ) で確認したところ、
OK.html のほうは、特に問題なく表示され、スクロール時も負荷はほとんど見受けられませんでした。
NG.html のほうは、一瞬CPU が 50% ぐらいに行きますが、表示後のスクロールでもスクロール中だけ 50% 到達するかしないか?という動作になりました。
念のため FF3 と Safari でそれぞれ試しましたが、大体同じような負荷状況でした。
長時間の高負荷状態というのは、どのくらいの時間をさしていますか?
また、みなさんの Win7 IE8 や RC1 ではどうでしょうか?
五寳- 回答としてマーク 大久保直美Microsoft employee 2009年3月26日 4:01