ソケットサーバの同時接続について

[戻る]
takuman [E-Mail] 2006/07/02(日) 15:56:38
こんにちは

今、ある運用の監視システムの設計をしています。

1)サーバ Widnows 2003 Server
2)CPU 64bit
3)メモリー 8GB
4)監視端末 約1000台

端末からは
1)起動時に起動通知をサーバに投げる
2)障害発生時に障害コードをサーバに投げる
3)復旧時に復旧通知をサーバに投げる
4)終了時に終了通知をサーバに投げる
5)サーバから端末へ定期的に死活監視を行う。

ソケット通信での実装を想定していますが、
このような場合、
起動時にconnectして終了時にcloseするような設計をすべきでしょうか?
それとも毎回の通知においてConnect、Closeを行うべきでしょうか?

そもそも1000台の接続をサーバで張ることが出来るのか?
という課題もあります。

よろしくお願いします。

takuman [E-Mail] 2006/07/02(日) 15:58:59
補足ですが、
ソケットはTCPソケットを想定しています。

επιστημη 2006/07/02(日) 16:38:04
> 起動時にconnectして終了時にcloseするような設計をすべきでしょうか?
> それとも毎回の通知においてConnect、Closeを行うべきでしょうか?

case-by-case. 
とはいえ"1000本のsocketを始終繋ぎっぱ"てのも問題。

# connectせずに「UDPで投げっぱなし」という選択はアリですか?
# 確実に相手に届く保証はありませんけど。

takuman [E-Mail] 2006/07/02(日) 17:12:32
ありがとうございます。

もともとudpがいいのでは?と考えていましたが
重要な通知もありますので、
tcpで行わざるを得ません。

1000本のソケットつなぎっぱは問題ですよねえ。
やはり・・・

基本は端末からは
1)サーバへconnect
2)サーバへwrite
3)サーバへClose
って動きになるのでしょうか?

大半の通知は端末側は通知した後のサーバの処理結果を知らなくてもいいです。
一部だけ、知らないといけない通知もありますが、
それは
1)サーバへconnect
2)サーバへwrite
3)サーバへselect
4) サーバよりread
5)サーバへClose
って動きになるのでしょうか?

サーバはマルチスレッドを想定していますが
子プロセスとマルチスレッドは同義語ですか?

επιστημη 2006/07/02(日) 17:55:49
手順はそんなところでしょうね。

> サーバはマルチスレッドを想定していますが
> 子プロセスとマルチスレッドは同義語ですか?

違います。
プロセスは実行モジュール(exe)が別。
スレッドはサーバ内の1関数です。

takuman [E-Mail] 2006/07/02(日) 19:04:05
ありがとうございます。

さて、ソケットサーバが一つ端末からの接続で占有されないためには
ACCEPT後子プロセスを作成するのが一般的な方法ですか?

下記のサイトで勉強していますが・・・

http://hp.vector.co.jp/authors/VA003991/kouza/senior/kouza_socket.html

よろしくお願いします。

επιστημη 2006/07/02(日) 21:11:09
> さて、ソケットサーバが一つ端末からの接続で占有されないためには
> ACCEPT後子プロセスを作成するのが一般的な方法ですか?

'一般的'とは如何なる意味ですか?

実装次第でどうにでもできます。
スレッドでもプロセスでもselect待ちでも。

古いスレッドには追加発言できません。