お世話になっております。
サーバーから、数10KBレベルのデータを、500台程度のクライアントにソケット通信で
配信したいと思った場合に、できる限り早く配信するには、どういったところを強化するのが
効果的なのでしょうか?
(CPU、メモリ、NIC、回線の種類、果てはサーバーの台数、回線の本数など)
また、例えば、
HPのDL360 G7の最小構成ぐらいで回線1本では、上記データはどのくらいの時間で
配信できるものなのでしょうか?
「500台程度なら1秒もかからない」や「1台目と500台目で10分ぐらい差がでるのでは。」などの
ご回答が頂けるとありがたいです。
(計算方法なども教えて頂けると助かります。)
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
「サーバーから、数10KBレベルのデータを、500台程度のクライアントにソケット通信で配信」
「LANの外です。全国の拠点(クライアントPC)にインターネット経由で配信する予定です。」
「拠点側にはまだ何も無いので、回線やルーターなども要件に合わせて選べます。」
「XML形式で、500台全てに同じデータを送ります。但し、送信の頻度としては、数秒に一度配信処理を実行します。」
これが条件だとするね。
まず、わかりやすくするために、500箇所の拠点に『異なる』データを送信するならどうするかね。
■ 例その1-A
普通に、
・TCP コネクションを張って
・10KB データ送信して
・コネクションを閉じる
と、一台あたり 2400ms かかったとして、単純に 500 倍だから
1200,000ms → 1200秒 → 20分
単純に、一台一台、シーケンシャルに、処理すると、一回のデータ送信に 『20分』かかるということになる。
とても、「数秒に一度配信処理を実行」は間に合わない。。。
なので、例えばこれを 20拠点パラレルで通信したとすると。。。20で割れば『1分』。
でも「数秒に一度配信処理を実行」まだまだ足りない。
100拠点パラレルで通信できるような、サーバのスペックと、ネットワーク幅を持たせて、ようやく『2秒』
次に、サーバのスペックね。
これを 4スレッド対応の CPU 一つでまかなうためには、
500(拠点) ÷ 4(スレッド) × 2.4(秒/拠点) ÷ 2(秒)→ 150 (プロセス)
つまり、常に 150個のプロセスが動き続けないとダメ。
。。。ちょっと無謀かな?
12スレッド対応 CPU だと、1/3 だから 50プロセス。ちょっといけそうな気がする。
ネットワーク幅は、
10000(バイト) × 8(ビット) × 500(拠点) ÷ 2(秒) ÷ 0.5 (転送効率) = 40,000,000(bps)
= 40(Mbps)
サーバのネットワーク幅は 50Mbps の最低保障があればOKかな?
■ 例その1-B
500拠点の TCP コネクションを持続するなら、。。。
500(拠点) ÷ 4(スレッド) = 125 (プロセス)
毎回コネクションを閉じるよりちょっとだけ、ましかな?
12 スレッド対応 CPU なら 1/3 で ≒ 42 プロセス。
■ 例その1-C
TCP コネクションを非同期、イベント駆動型(node.jsのようなタイプ)で構築。
プロセス数やスレッド数を最低限に抑えられるので、ネットワーク幅さえクリアすればOK!
問題点、
一つのプロセスに、たくさんの拠点が依存してるから、プロセスが一つでもダウンすると、
影響が大きいので、メモリや CPU の信頼性や誤動作の原因のノイズの除去や電源の安定が肝。
それなりに、サーバ周辺にお金がかかるとおもう。
■ 例その2
TCP じゃなくて、UDP で 500拠点にパケットを投げまくる!
これなら、CPU の性能はそれほどいらないから 4スレッド対応の CPU で十分だとおもう。
問題点、
・データが届いたことが保障されない。
・届く順番が保障されない。
・通信経路でのデータ改竄防止の仕組み(SSL とか SSH)が利用できない。
自前で実装するのでちょっと大変かな?
でも、ネットワークプログラマなら腕のみせどころかも。
サーバのネットワーク幅は、
10000(バイト) × 8(ビット) × 500(拠点) ÷ 2(秒) ÷ 0.8 (転送効率) = 25(Mbps)
ネットワークの最低保証は、30Mbps は欲しいかな?
次は、500箇所の拠点に『同じ』データを送信するなら。。。
■ 例その3
TCP コネクション持続型で、ツリー状にバケツリレー。
サーバのネットワーク幅も普通でOK!
1台が8台と通信したとすると、
log(500) / log(8) = 2.98859476 ≒ 3(段構成)
サーバ→ 8台(1次中継) → 64台(2次中継) → 512台(末端)
問題点は、1次中継がダウンすると、末端への影響が大きいこと。
中継のバックアップシステムを適切に設計するのが肝心。
■ 例その4
500拠点とサーバで P2P ネットワークを構築して、データをプッシュしていく。
各拠点自体もサーバになるから、メインサーバのスペックもネットワーク幅も最低で OK。
P2P ネットワークの設計が肝。
P2P ネットワークを適切に設計できるエンジニアが日本にどのぐらいいるかは不明。
数十人?数百人?数千人?
とても、とても、とても、効率的。
お礼が遅くなり申し訳ありません。。
回答、難しく、半分も理解できてませんが、、
必要なスペックなどを洗い出す為の計算式がみえてきました。
一旦プロセスとスレッドでの必要スペックからハードウェアの選定をしてみようと思います。
(「例その1-A」が自分にはわかり易かったです。)
しかし、人気スマホアプリなどでプッシュ配信を行う業者は、いったいどのような方法なんですかね・・・
サーバー何十台、回線最低保証1Gbpsとかなんでしょうか・・・いったい月にいくらかかるのか。
ありがとうございました!!
No.1
- 回答日時:
必要そうな情報
サーバはLANの内?外?
送信する数 10KB のデータの内容は、全て異なるか?同じか?
あと、サーバと500台の PC のネットワーク構成(少なくともルータは全部)
を書くと、良さそうな回答がつくかも。
この回答への補足
ありがとうございます。
現状、構成を考えている段階でして、何も存在していない状態です。
決まっている範囲での内容としては、
> サーバはLANの内?外?
LANの外です。全国の拠点(クライアントPC)にインターネット経由で配信する予定です。
拠点側にはまだ何も無いので、回線やルーターなども要件に合わせて選べます。
> 送信する数 10KB のデータの内容は、全て異なるか?同じか?
XML形式で、500台全てに同じデータを送ります。
但し、送信の頻度としては、数秒に一度配信処理を実行します。
> あと、サーバと500台の PC のネットワーク構成(少なくともルータは全部)
まだ構想段階でして、回線やデータセンターすらも決まっていないのでルータもありません。。
配信事業を経験したことがなく、どこら辺に気をつけるかが知りたく、
助言頂けるとありがたいです。(おそらく専門業者にも相談しなければならないと思いますが。)
経験則や、前提が多少ずれていても良いので、回答頂けませんでしょうか。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HyperVで仮想マシンがネットワ...
-
VPN環境でのARPテーブルの情報...
-
VMware のネットワーク設定につ...
-
pingで・・・
-
192.168.4.0/22のネットワーク...
-
ホスト番号
-
ディスプレイ上で起こる2重表...
-
目を左右別々に動かす
-
ゲーミングPCでの質問です ゲー...
-
PLC間の信号のやりとりについて...
-
HDMIとHDの違いはなんですか? ...
-
JEM1425とJEM1225の違いについて
-
プリント基板のパターンの修復方法
-
RS232C 通信でエラー(受信が正...
-
テレビから”キーン”と耳鳴りの...
-
TAとルーターの違いって?
-
Cpkのk(偏り)値をExcelで出す...
-
USBからの電源供給をコントロー...
-
VBA IE制御でのBISIC認証画面の...
-
買ったばかりの液タブの画面が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HyperVで仮想マシンがネットワ...
-
ワークグループとドメインの共存
-
VPN環境でのARPテーブルの情報...
-
ホストとサーバーの違いについて
-
DNSとWINSの違い
-
ルーター越えのIP機器のMAC...
-
IPアドレスの範囲が重複するネ...
-
別セグメントのsambaへのアクセス
-
VMware のネットワーク設定につ...
-
同じIPアドレスを持つ機器間の通信
-
ネットワーク上からファイルア...
-
以下の問題を教えてください ホ...
-
MACアドレスとIPアドレス
-
VPNについて
-
サブネット分割(Bクラス)
-
ネットワーク
-
SMBとNetBEUIの関係を学びたい
-
pingで・・・
-
CCNA 計算問題
-
ネットワーク サブネット 分...
おすすめ情報