データ配信での注意点

このQ&Aのポイント
  • データ配信における効果的な強化方法
  • HP DL360 G7の最小構成でのデータ配信時間
  • 配信データの速さに関する疑問
回答を見る
  • ベストアンサー

データ配信での注意点

お世話になっております。 サーバーから、数10KBレベルのデータを、500台程度のクライアントにソケット通信で 配信したいと思った場合に、できる限り早く配信するには、どういったところを強化するのが 効果的なのでしょうか? (CPU、メモリ、NIC、回線の種類、果てはサーバーの台数、回線の本数など) また、例えば、 HPのDL360 G7の最小構成ぐらいで回線1本では、上記データはどのくらいの時間で 配信できるものなのでしょうか? 「500台程度なら1秒もかからない」や「1台目と500台目で10分ぐらい差がでるのでは。」などの ご回答が頂けるとありがたいです。 (計算方法なども教えて頂けると助かります。) よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答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 ネットワークを適切に設計できるエンジニアが日本にどのぐらいいるかは不明。 数十人?数百人?数千人? とても、とても、とても、効率的。

gookyuu
質問者

お礼

お礼が遅くなり申し訳ありません。。 回答、難しく、半分も理解できてませんが、、 必要なスペックなどを洗い出す為の計算式がみえてきました。 一旦プロセスとスレッドでの必要スペックからハードウェアの選定をしてみようと思います。 (「例その1-A」が自分にはわかり易かったです。) しかし、人気スマホアプリなどでプッシュ配信を行う業者は、いったいどのような方法なんですかね・・・ サーバー何十台、回線最低保証1Gbpsとかなんでしょうか・・・いったい月にいくらかかるのか。 ありがとうございました!!

その他の回答 (1)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

必要そうな情報 サーバはLANの内?外? 送信する数 10KB のデータの内容は、全て異なるか?同じか? あと、サーバと500台の PC のネットワーク構成(少なくともルータは全部) を書くと、良さそうな回答がつくかも。

gookyuu
質問者

補足

ありがとうございます。 現状、構成を考えている段階でして、何も存在していない状態です。 決まっている範囲での内容としては、 > サーバはLANの内?外? LANの外です。全国の拠点(クライアントPC)にインターネット経由で配信する予定です。 拠点側にはまだ何も無いので、回線やルーターなども要件に合わせて選べます。 > 送信する数 10KB のデータの内容は、全て異なるか?同じか? XML形式で、500台全てに同じデータを送ります。 但し、送信の頻度としては、数秒に一度配信処理を実行します。 > あと、サーバと500台の PC のネットワーク構成(少なくともルータは全部) まだ構想段階でして、回線やデータセンターすらも決まっていないのでルータもありません。。 配信事業を経験したことがなく、どこら辺に気をつけるかが知りたく、 助言頂けるとありがたいです。(おそらく専門業者にも相談しなければならないと思いますが。) 経験則や、前提が多少ずれていても良いので、回答頂けませんでしょうか。 宜しくお願い致します。

関連するQ&A

  • PC1台でライブ配信

    ライブ配信用サーバーを使わず、PC1台で音声+動画のライブ配信を行いたいと考えています。 WME9を試してみましたが、同時接続数が5となっています。 (レジストリをいじることで50にできるそうですが…) このソフトですと、サーバーを用意しなくとも音声+動画のライブ配信が行えましたので、希望に適っていました。 しかし、同時接続数50では足りません…。100~200くらい同時接続できて、WME9と同様にPC1台でライブ配信できるソフトはあるのでしょうか? 回線はBフレッツベーシック(配信専用に1回線用意します)で、固定IPを用意します。PCスペックは予算30万円程度までなら対応できます。

  • ファックスの同報配信システムを構築したいのですが・・

    市販のファックス配信ソフトとファックスサーバー用の PCを用意してファックスの同報配信システムを構築したいのですが、1台のPCで、同時に4回線程度の電話回線を使って送信させる方法について、いい案がございましたらぜひ教えて頂けると幸いです。

  • ドメインユーザーでログインしたXPクライアントにソフト配信したい

    Windows2003サーバのドメインに参加しているXPクライアント に、ソフトの配信・自動インストールを行いたいです。 ただし、クライアント側はインストール権限のないドメインユーザで ログインしています。(遠隔地にあり、しかも台数が多いので1台 ずつリモートなどでインストールするのは無理な状況。) また、ソフトはMSIタイプではなく、EXEで実行してインストール するタイプです。 一応、色々調べましたが、ZAPファイルを作成して配信する方法だと インストール時の特別権限を付与出来ないため無理でした。 何か別のソフトや裏技でもいいので、あればご教授ください。

  • ソケット通信において、サーバからクライアントに任意のタイミングでデータを送る方法

    ソケット通信において、接続されているクライアントに対しサーバ側から任意のタイミングでデータ送るにはどんな方法があるか教えてください。 例えば1分ごとに、接続されているクライアント全体にメッセージを送りたい、といった場合にどうすればよいでしょうか。 ちなみに対戦ゲームのようなものを作ろうと思っています。 クライアントはFlash、サーバはperlで開発しています。 クライアントからのデータに応じて何かを返すところまではできたのですが、サーバ側をトリガーとしてデータを送る手段がわからなかったので質問しました。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • LAN環境でのビジー発生について

    あるシステムで、物理的には接続状態にも関わらず、回線ビジーと思われる現象が発生することがあります。 システムは、1台のPCサーバ(Windows2000)に38台のクライアント(WindowsNT等)がLANおよびWANにて接続されている構成です。 まずWANを調べましたが、特にエラーは発生してないようです。 また、通常のトラフィックは下記の通りです。 ・クライアントのうち21台は、5秒間隔でサーバと通信している。 ・クライアントのうち17台は、常時サーバと通信している。 (いずれも、1回の通信時のデータ長は1K以下) 通信はすべて、TCP/IPソケット通信 現象の特徴としては、 ・1回発生すると、同クライアントとの通信で複数回連続して発生する場合が多い ・発生しないときは、数週間全く発生しないこともある <質問> ・他システムのトラフィックは関係ないものとして、上記のトラフィックで、回線ビジーとなることは考えられますか? ・上記程度のトラフィックで回線ビジーまたはエラーが発生する可能性が低いとすると、原因は何が考えられますか? 以上、よろしくお願いします。

  • メルマガの大量配信

    メールマガジンの配信システムを構築しました。 しかし、約15000件分を大量配信すると、問題がでてしまいます。サーバーから応答がとまり、あげくの果てには、セッションが切れてしまい、「サーバーがみつかりません」の画面がでてしまいます。 おそらく、SMTPサーバのキューが詰まってしまうのだと思われます。 状況 (1)15000件をBCCではなく、TOで1件1件配信しています。 なぜかというと、15000件のデータはDBに登録されているのですが、DBから引っ張ってきた個々の情報を各々のメールに載せなければならないからです。 ※BCCであれば、おそらく問題はないのだと思われます。 (2)4000件で試した場合は、問題ありませんでした。 現在考えているのは、Sleep関数をかませて、送信間隔をあけることです。しかし、その分処理時間がかかってしまうので、何かもっとスマートなやり方は無いものかと模索してしまいます。何かお分かりになる方がいらっしゃいましたら、ご教示をお願いいたします。

    • ベストアンサー
    • PHP
  • CAL はサーバーごとに必要か

     職場では、Server は Windows Server 2003 、Client PC は Windows Xp が100台ほど、で運営しております。このほど、Server を追加しようか、と検討しております。そこで質問なのですが、Windows Server 2003 を1ケ追加すると、CAL が、Client PC の台数分必要でしたでしょうか。  あるいは、もともと Client PC の台数分の CAL を用意しておけば、Server を追加しても、Client PC の台数が増えなければ、CAL の追加も必要無かったでしょうか。

  • TCPによるファイル転送

    質問です。よろしくお願いします。 いま、winsockでクライアントからサーバにバイナリファイルを転送するプログラムを組んでいます。内容は、サーバ側を待機の状態にし、クライアントからの要求があった時点で新たにソケットを作ってそこからデータのやり取りをするというものです。 しかし、ソケットを使った通信がサーバからクライアントの一方通行になってしまっていて、データを送ることが出来ません。(クライアントから送ったデータは0になっているようにも思われます) ソケットは一方通行なのでしょうか?参考にしている本のサンプルではお互いにやり取りをしていたと思うので、そのようなことはないと思うのですが・・・。 内容分かりにくければご質問ください。 回答お待ちしています。

  • WindowsMediaServerを使ってストリーミングの動画配信をしたいのですが、、、、

    今度の夏祭りでWindowsMediaServerを使ってその様子を動画配信しようということになり、 なぜか、サーバー担当に任命されちゃいました。。。 Windows2000Serverを購入したり宣伝をしてみたりと準備しているのですが、 MediaEncoderによる配信はできてもServerを通した配信のやり方がよくわかりません。 書籍を買えばいいのかもしれませんが、資金ももう余裕がないので ちょっと厳しい状態です。 動画の配信方法として考えているのは WindowsMediaEncoderを入れたノートPC数台にPHSや近くの無線LANなどを 使って帯域の広いADSL接続のWindowsMediaServerに送り、 サーバーからクライアントに配信という 多分、よくあるような配信方法です。 ・・・が、Webを調べてもMediaEncoderのみで行う配信の方法が大半で、 Serverの設定の参考になるようなところがありません。 下の図のような接続を想定しておおまかな設定手順など教えてください。 おねがいします。 また、参考になる HPなどあれば紹介お願いします。 今週中になんとか目処を立てろとのことなので・・・ ------------------------------------------------------------ [予定図] ------------------------------------------------------------ カメラを接続したノートPC ------------------> Windows2000Server (WindowsMediaEncoder)   PHS/無線LAN   (WindowsMediaSerever) ________________________/ADSL8M | | | | | | | | | | | |  □ □ □ □ □ □ □ □ □ □ □ □ -------- ク ラ イ ア ン ト --------- #それなりの品質が確保できないことはわかっていますが、低画質でも配信するつもりです

  • 高画質のライブカメラで小規模配信をしたいのですが

    ライブカメラによる高画質の配信をしたいのですが、どういった方法が一番低コストでお勧めか教えて下さい。 例 学習塾の教室3クラスにそれぞれカメラ1台を置きライブストリーミング 画質はフルHD いつでも確認出来るよう24時間稼動 視聴者は合計30人から最大100人程度 最初ストリーミングサーバーを検討したのですが、視聴者あたりの費用がかなり高額になるようです。 商用のP2Pストリーミングサービスも数社あるようですがサイトを見るとかなり大規模な放送を想定しているような印象です。具体的な料金は載っていないのですが、視聴者数十人程度ではあまりコストのメリットも無い気がします。 数十人程度への配信であれば光回線を数本引いて事務所にサーバー作る方法が一番良いかと思うのですがどうでしょうか。 プロバイダーによっては常時大量のデータを送っていると帯域規制をされてしまうと聞いているのでこの方法であればビジネス向けのプランにしようと思います。 録画したものをサーバーにアップすれば安上がりですが、ライブに付加価値を考えているので・・ あまり詳しくないのでどういった方法が一番良いのかアドバイスをお願いします。