- - PR -
ソケットサーバにて900台の端末との接続について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-07-02 14:19
こんにちは
ソケットサーバにて端末からの情報発信を待つシステム設計をしています。 900台の端末からの情報発信を待ち受けます。 ソケット通信を想定していますが、 この場合、サーバ1台と900台の端末との接続を つなぎっぱなしにしても問題ないでしょうか? サーバはWindows 2003 Server Enterpriseで メモリーは 8GBです。 1接続5MB消費したとしても4.5GBの消費で許容範囲では?と 勝手に想定していますが・・・ サーバアプリケーションはマルチスレッドで処理していこうと思っています。 [ メッセージ編集済み 編集者: takuman 編集日時 2006-07-02 14:20 ] | ||||
|
投稿日時: 2006-07-02 21:10
繋ぎっぱなしにする必然性がないのなら避けた方が無難だと思います。
例えば、メッセージの通知を双方向から行う必要があり、個々の通知を リアルタイムで処理しなければならない、等の要件がない場合です。 安易にソケット通信を自前で実装するより、HTTP通信を採用する方が 堅実な場合が多いですよ。特にクライアントの台数が多い場合では。 少なくとも、まともなサーバの実装に必要なコストはばかに出来ません。 あと、マルチスレッドの使い方として、1セッション/1スレッドな設計では すぐに破綻するのでスレッドプールや多重化通信を考えた方が賢明でしょう。 | ||||
|
投稿日時: 2006-07-03 23:53
あんまり、どういう要件か分かりませんが自分だったら、UDP で作りそうな印象。
サーバーは、スレッドは二つにして、受けたパケットを FIFO に入れるスレッドと、FIFO を処理するスレッドかな。 追記 一つのプロセスでは、2G までしか使えません。 [ メッセージ編集済み 編集者: わちゃ 編集日時 2006-07-04 00:02 ] | ||||
|
投稿日時: 2006-07-04 01:10
900個のTCPコネクションを張る、というのは問題ないと思います。
それを処理するために900個のスレッドを作るというのは、ちょっと危ないかも知れません。 設計の初期の段階で、実際に試しておく必要があると思います。 ただし、電源断とかネットワークが切れた等で「コネクションを切断しないまま、端末が死んだ」 場合の処理を考えると、かなり面倒なことになりそうです。 通信内容にもよりますが、「端末で発生したイベントを通知する」類のシステムなら、 UDPにした方がよほど簡単でしょう。
これは、許容範囲外ですね。 1プロセスで使えるメモリー空間は、ユーザ2GB+システム2GBです。 (/3GBオプションを指定した場合は、ユーザ3GB+システム1GB) |
1