次のようなデーモン化されたrubyスクリプトをサーバーで実行しています。
@server = TCPServer.open(61101)
loop do
@thr = Thread.new(@server.accept) do |sock|
Thread.current[:myArrayOfHashes] = [] # hashes containing attributes of myObject
SystemTimer.timeout_after(5) do
Thread.current[:string] = sock.gets
sock.close
# parse the string and load the data into myArrayOfHashes
Myobject.transaction do # Update the myObjects Table
Thread.current[:myArrayOfHashes].each do |h|
Thread.current[:newMyObject] = Myobject.new
# load up the new object with data
Thread.current[:newMyObject].save
end
end
end
end
@thr.join
end
このサーバーは、すべてMacOS10.6で実行されているRailsアプリケーションのデータを受信して管理します。クライアントは15で15分ごとにサーバーに電話をかけますが、現在15では15分ごとに電話をかけるクライアントは16ほどしかありませんが、次のことについて疑問に思っています。
- 2人のクライアントがほぼ同時に電話をかけた場合、1人のクライアントの接続試行は失敗しますか?
- サーバーが同時に収容できるクライアント接続の数を把握するにはどうすればよいですか?
- サーバーが使用しているメモリの量を監視するにはどうすればよいですか?
また、この種のサーバーを実装するための最良の方法について説明している記事がありますか?つまり、サーバーの複数のインスタンスを同じポートでリッスンさせることはできますか?それも役に立ちますか?
Bluepillを使用してサーバーデーモンを監視しています。