1306341425 【並行ダウンロード】

--回答受付中にもコメント欄を開いています --
 
ダウンロード(以下DLと略す)するファイルが沢山ある時、通常はひとつづつ
のDL完了を待って、順次DLを繰り返します。
 
(利用するネット環境やPCの性能に依存するとは思いますが、私の場合には)
DLするファイルが複数ある時、並行してDL(下記※)しても個々のDL所要時
間はほとんど変わりません。
 
例えば、ひとつのDLに10分を要する同サイズの5つのファイルを(順次DLす
れば50分を要するはずだが、)5つ並行してDLしても所要時間はほぼ10分。
 
なぜこのようなことが可能なのかをわかり易く説明してください。
 
※並行してDL
(使用しているブラウザによるのかも知れませんが、わたしの場合には)
ひとつ目のDLを仕掛けて、それが完了するのを待つことなく、ふた
つ目以降のDLを仕掛けることができます。(添付画像参照)
 

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/05/26 01:37:08
  • 終了:2011/05/29 07:51:19

ベストアンサー

id:mezase50 No.2

mezase50回答回数143ベストアンサー獲得回数172011/05/26 22:09:32

ポイント40pt

2回目の回答をどうぞということなので、1回目の回答にはおおむねさらっと書いていますが追記します。

質問の現象は接続プロバイダ、サーバー側のプロバイダ、あるいはその両方でセッション毎やプロトコル毎に帯域制限を行っているから起こる現象です。

FTPだと速いがSSHだと遅いといった現象や、複数のセッションを張ると総合的に本来の物理的な回線速度に近い速度までまで速度を上げることができる現象などがそれです。

プロバイダは結構きめ細かくその帯域制限の値をチューンしているようです。

接続プロバイダ側での帯域制限は日本ではあまり行われていないみたいですが、海外のプロバイダの場合は結構行われているようですし、サーバー側は自分の帯域を公平に分配するためにセッション毎に帯域制限をかなり積極的に行っています。

これは何が何でも回線速度限界でパケットを流すようにするよりは実用上問題ない程度に制限することで違和感無く公平により多くのサービスを提供することができるからです。

何かをダウンロードする場合にいくつまでセッションを張れるかどうかとその時の速度の変化を見ているとそれぞれのプロバイダのポリシーが垣間見えて面白いですね。

この辺はダウンロードする側とされる側のポリシーのぶつかり合いや駆け引きだったりします。

例えばYoutubeは8個ぐらい同時にセッション張れるのでうまくダウンロードするとあっという間に終わります。1回目の回答で紹介しているInternet Download Managerはそれを自動的に行っています。このようなダウンロード方法がメジャーになると接続数をもっと少なく制限されるようになるかもしれません。

http://www.atmarkit.co.jp/flinux/rensai/apache2_08/apache08c.htm...

id:mkonomi

2度にわたり、丁寧で詳細な回答ありがとうございました。

とても分かり易い回答です。

「ダウンロードする側とされる側のポリシーのぶつかり合いや駆け引き」、面白いですね。

ご説明頂いた内容はすべて理解できたつもりです。

 

今後は知人から動画を受け取るとき、適度の小さいサイズのファイルを多数アップロードしてもらうようにし、

私はそれらを並行してダウンロードするようにしたいと思っています。

 

2011/05/29 07:44:20

その他の回答(2件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/05/26 02:17:39

ポイント30pt

公開サーバーでは、より多くの人が、より公平に使えるようにと

PROXYサーバやWEBサーバで帯域制限(一つの接続先が利用できる時間当たりの通信量を制限する)を行って

一つのファイルだけ(あるいは通信相手一箇所だけ)で

データの転送能力を使いきってしまわないようにしているからです

 

あなたが同時ダウンロードを実験したサイトでは

ダウンロードの時間から大雑把に逆算してみると107-163KB/sec程度になっているということのようです

(同時ダウンロードを大勢がいっせいにやりだすと転送速度は当然ながら落ちますので

163KB/secが設定上限を精一杯に使ってのものなのかどうかは判断できかねます)

 

このような情報が必要かどうかはわかりませんが、WEBサーバソフトとして有名なapacheでは

mod_bandwidth(Apache1.3系)や mod_bw(Apache2.x系)などのモジュールを組み込んで行いますので

さらに興味がありましたら検索してみてください

id:mkonomi

回答ありがとうございました。

 

コメント欄でのコメントもありがとうございます。

 

2011/05/29 07:47:19
id:mezase50 No.2

mezase50回答回数143ベストアンサー獲得回数172011/05/26 22:09:32ここでベストアンサー

ポイント40pt

2回目の回答をどうぞということなので、1回目の回答にはおおむねさらっと書いていますが追記します。

質問の現象は接続プロバイダ、サーバー側のプロバイダ、あるいはその両方でセッション毎やプロトコル毎に帯域制限を行っているから起こる現象です。

FTPだと速いがSSHだと遅いといった現象や、複数のセッションを張ると総合的に本来の物理的な回線速度に近い速度までまで速度を上げることができる現象などがそれです。

プロバイダは結構きめ細かくその帯域制限の値をチューンしているようです。

接続プロバイダ側での帯域制限は日本ではあまり行われていないみたいですが、海外のプロバイダの場合は結構行われているようですし、サーバー側は自分の帯域を公平に分配するためにセッション毎に帯域制限をかなり積極的に行っています。

これは何が何でも回線速度限界でパケットを流すようにするよりは実用上問題ない程度に制限することで違和感無く公平により多くのサービスを提供することができるからです。

何かをダウンロードする場合にいくつまでセッションを張れるかどうかとその時の速度の変化を見ているとそれぞれのプロバイダのポリシーが垣間見えて面白いですね。

この辺はダウンロードする側とされる側のポリシーのぶつかり合いや駆け引きだったりします。

例えばYoutubeは8個ぐらい同時にセッション張れるのでうまくダウンロードするとあっという間に終わります。1回目の回答で紹介しているInternet Download Managerはそれを自動的に行っています。このようなダウンロード方法がメジャーになると接続数をもっと少なく制限されるようになるかもしれません。

http://www.atmarkit.co.jp/flinux/rensai/apache2_08/apache08c.htm...

id:mkonomi

2度にわたり、丁寧で詳細な回答ありがとうございました。

とても分かり易い回答です。

「ダウンロードする側とされる側のポリシーのぶつかり合いや駆け引き」、面白いですね。

ご説明頂いた内容はすべて理解できたつもりです。

 

今後は知人から動画を受け取るとき、適度の小さいサイズのファイルを多数アップロードしてもらうようにし、

私はそれらを並行してダウンロードするようにしたいと思っています。

 

2011/05/29 07:44:20
id:mezase50 No.3

mezase50回答回数143ベストアンサー獲得回数172011/05/26 06:31:22

ポイント30pt

>なぜこのようなことが可能なのかをわかり易く説明してください。


接続プロバイダ側やサーバー側の設定によりひとつのコネクション(セッション)ごとに速度(流量)制限を行っているからです。

例えば回線速度8MbpsのADSLで接続をひとつ(ダウンロードをひとつ)行う場合に3Mbpsで速度制限が行われている場合はふたつ平行ダウンロードまでは回線全体の容量を超えない(3Mbpsx2<8Mbps)ので全体としての速度は落ちません。

3つ目の接続を開始した時点で必要な回線容量が実際の回線容量を超えて全体のダウンロード速度がこれにより制限されます。(3Mbpsx3>8Mbps)


この制限があるためにひとつの大きなファイルをダウンロードしようとしてもなかなか速度が上がらないという現象が起こるというデメリットの代わりに複数人数で使用した場合でもあまり速度の低下を感じさせずに済むというメリットもあります。



逆に例えばFTPのリジューム機能を上手く使ってひとつのダウンロードを複数のダウンロードに分割してしまってそれを同時に行いダウンロード時間を回線速度目一杯使って早く済ませてしまおうというダウンロードソフトも存在します。

例:Internet Download Manager

http://www.internetdownloadmanager.com/

http://cdn-ak.f.st-hatena.com/images/fotolife/m/mezase50/20110526/20110526072137.png

この画像の棒グラフを見ると分かると思いますが、このソフトはひとつのファイルを同時にできるだけ沢山複数の接続を試み、その最大接続数(サーバー側の設定でこの数は決まります)でダウンロードしています。たまたまどれかひとつの接続が遅くて他よりも時間がかかってしまっても早く終わって接続が余った分の接続を残りの部分に回すことで常にほぼ回線速度目一杯使ってダウンロードすることができてます。

id:mkonomi

回答ありがとうございました。

mezase50からの2度目の回答を先に開かせていただきました。

 

2011/05/29 07:46:02
  • id:mkonomi
    この質問のきっかけ(質問者からのコメント)
     
    従来から、無料のオンラインストレージfirestorage
    http://firestorage.jp
     ─ 保存容量無制限
     ─ 1ファイル250MBまで
     ─ 保存期間は最長7日間
    を利用して、知人から多くの動画ファイルを受け取っています。
     
    firestorageでは1ファイルのサイズ上限が以前はかなり大きかった(2GB?:記
    憶が曖昧)のですが、現在では250MBに引き下げられています。
     
    そのため、以前はひとつのフォルダに数十個の動画ファイルを入れて圧縮した
    ひとつの圧縮ファイルを受け取っていましたが、今では複数個のフォルダに数
    個づつの動画ファイルを入れ、それぞれを圧縮した複数個の圧縮ファイルを受
    け取るようになりました。
     
    つい先日、ひとつ目のDLを仕掛けて、それが完了していないのに、うっかり
    ふたつ目のDLを仕掛けてしまいました。すると怪我の功名で並行してDLす
    ることができてしまいました。しかも最初のひとつのDL所要時間は単独DL
    のそれと大差ありません。
     
    その後、もっと多くの(質問の引用画像では9個の)並行DLを試しましたが、
    その傾向は変わりません。
     
    利用するネット環境やPCの性能に依存して、おそらく、非常に多数の並行D
    Lではパフォーマンスが落ちるだろうとは予想しますが、並行DLのメカニズ
    ムを教えていただきたく思い、質問させていただいた次第です。
     
    ━━━━━
    回答者が3名になるか、3日経過するかの早い方で回答を開く予定です。
     
  • id:taknt
    並列になると みな同じ速度でDLするはずなのに それぞれ速度が ばらばらなのは なぜかということですね(笑)

    基本的にはDLするサーバーが違う恐れがあるけど 同じサーバーだったら 同じ速度のはず?
  • id:mkonomi
    takntさん
    コメントありがとうございました。
     
    >並列になると みな同じ速度でDLするはずなのに それぞれ速度が ばらばらなのは なぜかということですね(笑)

    >基本的にはDLするサーバーが違う恐れがあるけど 同じサーバーだったら 同じ速度のはず?
     
    それぞれ速度がばらばらなのには特に気づきませんでした。
     
    私は、クライアント側でひとつのブラウザーで同一のサーバーから並行して複数DL
    できることすら知らなかったほどのネットワーク素人です。
    先のコメントにも書きましたが、たまたま偶然に使ってしまった次第です。
    詳しい方にとっては常識かもしれませんが、ブラウザーで並行して複数DLできる
    仕組みそのものを素人向けに解説して頂きたいのです。
     
  • id:taknt
    それってマルチタスクって 何?ということですね。

    ま、簡単に言えば 人間の ながら なんとかってやつ。

    何かを口に入れて もぐもぐしながら テレビを見て 聞いて、独り言を しゃべってるって感じ。
    コンピューターの場合は、それらが 同一のものが できるということです。

    つまり 右手と 左手のほかに 手が 何本もあって それぞれの手が ポールペンをもって
    同時に 違う文章を 書くということですね。
  • id:mkonomi
    >詳しい方にとっては常識かもしれませんが、ブラウザーで並行して複数DLできる
    >仕組みそのものを素人向けに解説して頂きたいのです。
     
    少し書き加えさせていただきます。
     
    詳しい方にとっては常識かもしれませんが、ブラウザーで並行して複数DLでき、
    かつそれぞれのDL所要時間はほとんど増加しない理屈を素人向けに解説して頂
    きたいのです。
     
    質問文の例で言えば、ひとつだけの単独DLでも所要時間は10分、5個並列DL
    でも所要時間はほぼ10分となる理屈が理解できないのです。
     
  • id:taknt
    >質問文の例で言えば、ひとつだけの単独DLでも所要時間は10分、5個並列DL
    でも所要時間はほぼ10分となる理屈が理解できないのです

    それは それだけできる余裕があるということです。

    回線速度やマシンスペックが。
    たとえば これを 1000個並列DLさせたら どうなるのか?

    5個ぐらいならば 余裕でも、1000ともなると 当然ながら 速度は落ちるはずです。
    これで 変わらないのならば 一万個ならば?
    とかなりますけどね。

    限界を超えると 遅くなりますよ。


  • id:windofjuly
    うぃんど 2011/05/26 15:34:23
    質問文には入っていなかった事項なので追記しておきます
     
    >ブラウザーで並行して複数DLでき
     
    最近のパソコンではワープロ作業しながら音楽を聞いたりといった具合に
    複数の作業を並行しておこなえることが当然となってきています
    (どれだけ沢山の事を平行して行えるかはパソコンの能力によります)
     
    InternetExplorerやFirefoxといった主なブラウザは1つのソフトでありながら
    複数の処理(複数のサイトを同時に表示したり、複数のファイルを同時にダウンロードしたりなど)を
    平行して行えるようになっていて利便性を図っています
     
    >それぞれ速度が ばらばら
     
    1)ファイルは少しずつ箱(パケットと言います)に分けて順に運んでいるという形になっています
    2)ファイルA、B、Cの3つを運ぶ場合を考えますと
    ファイルの通り道(回線)は1本しかないので、Aからまず1箱
    次にBから1箱、Cから1箱、またAからという具合になります
    3)相手先の忙しさ具合や、自身の忙しさ具合などからタイミングにズレが発生することもあり
    その場合には、A、B、C、Aが飛ばされてB、C、Aといったようになります
    4)転送速度はダウンロードが始まってからの経過時間と、実際に転送された量から計算されますので
    タイミングのズレで飛ばされた場合には当然ながら他よりは遅くなります
  • id:mkonomi
    takntさん、windofjulyさん
    丁寧なコメントをありがとうございました。
     
    実効DL速度は以下の各状態が総合的にからんで決まるもののようですね。
    ─ サーバーのアクセス集中度合い
    ─ サーバー側の送出速度設定
    ─ サーバーの回線速度
    ─ 経由経路の混雑度合
    ─ クライアントのCPUの性能
    ─ クライアントのOSの性能
    ─ クライアントの契約回線速度
    ─ クライアントの並行起動APの種別と個数および各APの運用状態
    ─ クライアントのブラウザの並行ダウンロード数と各コンテンツサイズ
     
  • id:windofjuly
    うぃんど 2011/05/26 16:32:05
    >ひとつのDLに10分を要する同サイズの5つのファイルを
    >(順次DLすれば50分を要するはずだが、)
    >5つ並行してDLしても所要時間はほぼ10分
     
    以上の条件であればクライアント側の性能は申し分ないことがうかがえますし
    以下の3つも申し分ないことがうかがえます
    ─ サーバーのアクセス集中度合い
    ─ サーバーの回線速度
    ─ 経由経路の混雑度合
     
    残るは下記の2点・・・これの説明を簡単な文章にして回答1では書いてあります
    (そこまで理解しておられるなら開けなくてもいいくらいです。笑)
    ─ サーバー側の送出速度設定
    ─ 経由経路の速度設定
     
    ここまでコメントで話が進むと3番目の回答者有利ですね(笑)
    はてさて、送った塩は如何様に調理に利用されますことやら…
  • id:mkonomi
    >ここまでコメントで話が進むと3番目の回答者有利ですね(笑)
    ・回答数上限を5件
    ・ひとりあたりの回答数を2件
    に変更します。
    windofjulyさん、mezase50さん、2度目の回答をどうぞ!
    takntさんもできれば回答をお願いいたします。
     
    ━━━━━
    ユニークな回答者が3名になるか、3日経過するかの早い方で回答を開く予定です。
     
  • id:fuk00346jp
    >今後は知人から動画を受け取るとき、適度の小さいサイズのファイルを多数アップロードしてもらうようにし、私はそれらを並行してダウンロードするようにしたいと思っています。
     
    ・自分側がボトルネックになってる場合並行やら分割やらは逆効果だったりもします^^;
    ・迷惑行為の一歩手前のような気もしますが人気があるとこや混雑しているとこでは止めておきましょう。
     
    "分割ダウンロード"ツールもありますが参考までに(苦言サイト)
    ワテのとこじゃないです
    http://d.hatena.ne.jp/fuzzy2/20051028/p1
  • id:mkonomi
    fuk00346jpさん
    コメントありがとうございます。
     
    >・自分側がボトルネックになってる場合並行やら分割やらは逆効果だったりもします^^;
    私の場合、質問文の引用画像程度(9個の並列DL)では大丈夫そうです。
     
    >・迷惑行為の一歩手前のような気もしますが人気があるとこや混雑しているとこでは止めておきましょう。
    私が「""適度の""小さいサイズ」と書いたのはその辺をわきまえる意があります。
    具体的には、1GBを200MB5個にするレベルです。
    もっとも、今ではfirestorageでは1ファイル250MBの上限がありますから
    1GBのファイルのUPは出来なくなっていますが・・・。
     
  • id:mezase50
    分割ダウンロードの是非ですが、ダウンロードしたいファイルのサイズは分割しようがしまいが同じです。
    そういう意味からすると分割しても分割しなくても総流量は変わりません。
    また、別の視点からは常に回線容量に対して100%の流量があるわけではありません。
    1日にサービスできるダウンロード総量は24時間x回線速度を越えることはできません。
    またこの中で使われない時間帯や帯域があればそれは無駄になります。
    経済的な観点では回線を空いたままにしておくのは無駄(もったいない)なのです。
    空いている時間に短時間で(分割)ダウンロードを済ませてしまって残りの時間は他のユーザーに明け渡しているという見方もできます。
    真に迷惑な行為は不必要なデータのダウンロードであってそれは分割してもしなくても同じことです。
    何が迷惑(してほしくない行為)かはサービスを提供している側の事情により変わるわけでそれに従うようにするのは当然マナーですが「分割ダウンロード=迷惑行為」といったステレオタイプな見方は間違っています。
  • id:fuk00346jp
    蛇足すいませんでした。
  • id:mkonomi
    fuk00346jpさん、mezase50さん
    分割ダウンロードの是非の議論ありがとうございます。
     
    ちょっと、理屈っぽくなって申し訳ありませんが、私の場合は、"分割"ではな
    く、統合度合の低レベル化なのです。
     
    複数の動画ファイルを格納したフォルダをフォルダごと圧縮してひとつの圧縮
    ファイルにしたものをアップ/ダウンする際、フォルダに格納する動画ファイ
    ルの個数を少なくすることによって、アップ/ダウンする圧縮ファイルのファ
    イルサイズを小さくしようという訳です。
     
    論理的に意味を持つひとつのデータを物理的に複数個に"分割"してアップ/ダ
    ウンし、ダウンロード後につなぎ合わせて元のひとつのデータに復元するのと
    はちょっと意味合いが違います。
     
    具体例として20個の動画ファイルがあるとしましょう。
    最も原始的にはその20個の動画ファイルを個々にアップ/ダウンしますが、
    それでも咎められることはないでしょう。
     
    その20個の動画ファイルすべてををひとつのフォルダに入れ、フォルダごと
    圧縮してひとつの圧縮ファイルにしたものをアップ/ダウンすれば手間は1回
    づつで済みますが、ダウンロードの所要時間は長くなります。
     
    次に、その20個の動画ファイルを5つのフォルダに4個づつに分けて入れ、
    その5つのフォルダをそれぞれフォルダごと圧縮して5つの圧縮ファイルにし
    たものを個別にアップし、並列ダウンすれば手間は増しますが、ダウンロード
    の所要時間は短くなります。
     

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません