チャットサーバーの安定性

Cometでコネクションがブツブツ切れるなら問題ないんだけれど、単一プロセスで永続コネクションだと、サーバー落ちで大変なことになる。それぞれのユーザーが生き別れを喰らって、という具合。今回はそこの強度をどうするか、という話。
極論は「IRCのソースとプロトコル読んで来い」なんだが、それでは面白くない。なにか解決方法を考えたい。まぁ、結局何も思いつかないのがオチだが。
WebSocketでセッションを張っている状態でたとえばひとつのクライアントが無線LANの断線で切断する。しかし、そこでは接続が切れたことにはならない。
すると、ログイン状態が続いてしまう。そして、だれかが書き込んだ瞬間、配送先のノードに接続できず例外を投げてプロセスが死ぬ。
では、書き込み時にエラーをスローしないようにしてみよう。書き込みでは落ちないが、受信が発生したときにSYNのタイムアウトでやはり死ぬ。さて、どうするべきかと考える。
1プロセス1セッションでは接続数×2MBほどのRAMが必要だ。残念ながら、俺のサーバーは256MBしか積んでいなく、OSで50MBちょっと食っているはずなので、100人ほどしか繋がらない計算になってしまう。では、どうするか。送信エラーまたは受信エラー時にコネクションを破棄してやればいい。問答無用で破棄する。全体のために一つを犠牲にしてしまう。もし、それが単なるタイムアウトであってもセッションを切る。こうすれば最悪の事態は避けられると思う。
というわけで、node.jsのnetライブラリとWebsocketライブラリを書き直してくる。