![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になっております。
サーバーから、数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 2022/09/08 19:48
- VPN フリー wi-fi は安全ですか 自宅での wi-fi VPNを使用したら良い? 2 2022/05/31 04:12
- 統計学 確率統計の問題です。 3 2022/04/07 04:39
- その他(メールソフト・メールサービス) クリック率とは? 1 2023/06/18 11:53
- 格安スマホ・SIMフリースマホ 楽天回線エリアなのかパートナーエリアなのか 2 2023/01/14 00:56
- タブレット ユーチューブのライブ配信に必要なPCのスペックについて 1 2022/06/29 05:16
- FTTH・光回線 賃貸の光回線のセキュルティについて 4 2023/08/08 20:39
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- ルーター・ネットワーク機器 通信量や通信量による影響を計算し想定できますか 3 2023/01/13 09:07
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HyperVで仮想マシンがネットワ...
-
別セグメントのsambaへのアクセス
-
VPN環境でのARPテーブルの情報...
-
ワークグループとドメインの共存
-
ディスプレイ上で起こる2重表...
-
ゲーミングPCでの質問です ゲー...
-
ブラウン管テレビを買うか対応...
-
ZCTの比率について
-
PLC間の信号のやりとりについて...
-
TAとルーターの違いって?
-
マイクロ波放射装置
-
テレビから”キーン”と耳鳴りの...
-
目を左右別々に動かす
-
だれかいい案ありません
-
HDMIとHDの違いはなんですか? ...
-
Cpkのk(偏り)値をExcelで出す...
-
MATLABでサーボモータを制御す...
-
<単安定マルチバイブレータ> 単...
-
FPC基板とFFC基板の違いは?
-
EVMって、どういうものなのでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HyperVで仮想マシンがネットワ...
-
VPN環境でのARPテーブルの情報...
-
ホストとサーバーの違いについて
-
ワークグループとドメインの共存
-
DNSとWINSの違い
-
ルーター越えのIP機器のMAC...
-
サブネット分割(Bクラス)
-
仮想ネットワークってなんです...
-
インターネット接続が遅い
-
pingで・・・
-
CCNA 過去問題:2003年12月25...
-
異なるネットワークのファイル...
-
空きIPアドレスを探す方法。パ...
-
SMBとNetBEUIの関係を学びたい
-
別セグメントのsambaへのアクセス
-
無線LANルーターの不具合
-
vista 静的IPが機能しません
-
ネットワーク上からファイルア...
-
全く知識の無い初心者のサーバ...
-
ホスト番号
おすすめ情報