2008年7月10日木曜日

cometについて続きを話すサル

HTTPの同時接続数には制限があるらしい。ということはもちろんAjaxセッションも。cometはセッションを一つ占有し続けるのでこれは重要な問題です。チャットしながら別のAjaxセッションを使いたい時もあるだろうし、複数のチャットルームにログインする場合とか。で前回作ったチャットプログラム(7月9日の2-1、2-2)でブラウザ毎にテストしたところ下記のようになっておりました。数字が同時接続数。

FireFox 2
Opera 4
Safari 4
IE8beta 6

同時接続数の制限は一つのブラウザから一つのドメインに対してらしいので、これを回避するにはサブドメイン等を使うとよろしいということになっているようです。

そしてcometではAjaxセッションを保持し続けるわけですが、SafariではAjaxセッションは2分で切れてしまうようです。つまりチャットやってて2分発言がないと落ちてしまう!これを回避する方法は不明。他のブラウザは少なくとも30分は大丈夫でした。

さらにcometを実装したサーバがどれくらいのセッションを捌けるのかという問題もあります。なにしろ接続しっぱなしですから。手元のマシンで前述のチャットプログラムを使ってテストしたところ、同時接続数20で発言時にCPU使用率3~7%(発言の長さによる)、待機時は1%未満、メモリ使用量はほとんど影響受けず。100セッションぐらいだったらテキトーなサーバでもけっこういけるんじゃないでしょうか。1Kとか10Kとかなったら多分無理。

以上なんかよくわかってないことについて書いてしまったので突っ込みあったらお願いします。

0 件のコメント: