ソケット通信の通信限界についてお尋ねしたいのですが

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
taketoshi
記事: 222
登録日時: 15年前
住所: 日本国

ソケット通信の通信限界についてお尋ねしたいのですが

#1

投稿記事 by taketoshi » 14年前

現在、WINAPI+Winsockでサーバクライアントソフトを書いています。

サーバーに40kb程度のデータを持たせて、
接続上限を30台として各クライアントへ配信しているのですが
Winsockでの通信での限界ってどの程度なのでしょうか?

現在、多くて8台程度しか同時接続をしておらず、
30台Max接続してきた場合、どの位の挙動になりサーバに負荷がどの位かかるのか少し疑問があります。
また、接続数が多くなることによる、通信遅延を解決するにはサーバマシンの増強で対応するのでしょうか?

大規模MMOなんかは、どの程度のサーバー規模で、どの位のデータ量をやりとりしているのでしょう?
参考にしたいので大規模MMOに関わらずこういった事例の詳細を教えていただきたいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ソケット通信の通信限界についてお尋ねしたいのですが

#2

投稿記事 by softya(ソフト屋) » 14年前

考えなければいけないのは、
(1)パケットの負荷の影響を受けルータの性能、ネット回線の性能(LAN/WAN)、あとNICチップの性能です。
(2)内的要因としては、CPUクロック、コア数、メモリの性能でしょうか。
(3)MMOならデータベースサーバーの性能も絡んできます。

>サーバーに40kb程度のデータを持たせて、接続上限を30台として各クライアントへ配信しているのですがWinsockでの通信での限界ってどの程度なのでしょうか?

どのぐらいの頻度で、どのぐらいの回線負荷になっているかは、それだけの情報ではわかりませんね。
テストするのは過剰にアクセスするプログラムを作ってテストしてみれば分かるのでは?
ループして沢山起動すれば、すごいアクセス数にするのは簡単ですよ。

>また、接続数が多くなることによる、通信遅延を解決するにはサーバマシンの増強で対応するのでしょうか?

回線やルータなどの要因も見逃せませんね。
単純な要因では無いと思いますよ。
最終的にプログラムを調整してもCPU/メモリ負荷がMAXならサーバー増強ということになると思います。

>大規模MMOなんかは、どの程度のサーバー規模で、どの位のデータ量をやりとりしているのでしょう?
>参考にしたいので大規模MMOに関わらずこういった事例の詳細を教えていただきたいです。

1サーバーで一万人規模とかを支えているものもあるようですが、走っているプログラムの負荷や通信負荷の差異はMMORPG毎に大きく違うので一概には言えないでしょう。
それにサーバーも数万円から数百万円のサーバーまでありますので、選ぶサーバーでも話が変わってきます。
ここで、現役で関わっている人が内部の機密情報に関わるようなことを語れるわけも無いので具体的な数字は得られないと思ったほうが良いと思います。

直接は関係ないですが、こういう事例は色んな所で発表されています。
「PHPで大規模ブラウザゲームを開発してわかったこと」


あとCEDECの情報でセミナーに行かなくても公開されているものもあります。
「CEDEC 2011 | Computer Entertainment Developers Conference」
http://cedec.cesa.or.jp/2011/
「Search CEDEC Digital Library」
http://cedil.cesa.or.jp/search

【追記】 そういえばこの本を忘れてはいけませんね。
「Amazon.co.jp: オンラインゲームを支える技術  --壮大なプレイ空間の舞台裏 (WEB+DB PRESS plus): 中嶋 謙互: 本」
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

taketoshi
記事: 222
登録日時: 15年前
住所: 日本国

Re: ソケット通信の通信限界についてお尋ねしたいのですが

#3

投稿記事 by taketoshi » 14年前

softyaさん


貴重なご意見ありがとうございます。
勉強になります。


>どのぐらいの頻度で、どのぐらいの回線負荷になっているかは、それだけの情報ではわかりませんね。
DBをクライアントの誰かが更新したら接続しているクライアントすべてに一括送信する仕様になっています。
通信頻度としては、物凄く低いです。ゲームのように常時交信し合っているという状況ではないです。

>ループして沢山起動すれば、すごいアクセス数にするのは簡単ですよ。
これ実行してみます。


プログラム以外にも通信環境にも着目します。
ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る