大津さん koexukaです。 度々の返信ありがとうございます。
ちなみにベンチマークするクライアントでは socket.io-client がちゃんと動作 > していますでしょうか? (1000接続をどうシミュレートしたのか気になります。) 肝心な部分が伝え漏れていました。申し訳ございません。 クライアントは2パターンでテストしています。 1)ブラウザ(Mac版Firefox/Safari、socket.io-client) →複数タブ、ウィンドウで複数接続します。 2)Objective-Cによる実装 →@growthfieldさんのNNSocketIO(https://github.com/growthfield/NNSocketIO)を使っています。 サーバ側で出力されるデバッグログですが、ブラウザでもObjective-Cでも [2012-05-30 18:25:53.065] [INFO] console - debug: 'emitting heartbeat for client' '644389363226675471' [2012-05-30 18:25:53.066] [INFO] console - debug: 'websocket writing' '2::' [2012-05-30 18:25:53.067] [INFO] console - debug: 'set heartbeat timeout for client' '644389363226675471' [2012-05-30 18:25:53.068] [INFO] console - debug: 'got heartbeat packet' [2012-05-30 18:25:53.069] [INFO] console - debug: 'cleared heartbeat timeout for client' '644389363226675471' [2012-05-30 18:25:53.069] [INFO] console - debug: 'set heartbeat interval for client' '644389363226675471' のように出ており、クライアント側は特に問題がないかなと思っています。 ちなみに、ブラウザからsocket.io-clientを使って1接続のみで試してみた場合ですが、 やはり少しずつ(10KB〜30KB)、heartbeat interval秒ごとにNodeが使用するメモリが上昇していきます。 ですが、ベンチマークのとり方、プログラムソースの間違いやクライアント側に問題がないかどうか、 再度確かめてみます。 よろしくお願い致します。 2012年5月30日水曜日 16時32分44秒 UTC+9 shigeki: > > 大津です。 > > > ベンチマークではサーバに対し多数(0〜1000)接続 し、disconnectやconnect > > を繰り返し > > Nodeのメモリ使用量を監視していますが、 > > 定期的に使用量がグッと下がる(恐らくGC)ことはありますが、長いスパンで見 > > ると全体として増え続けています。 > > ※どこかのタイミングで接続数を0(ゼロ)にしてしばらく経過すると、メモリ使 > > 用量はNode起動時の状態に戻りますが、実運用ではあり得ない状態だと思います。 > > > > この状態であれば、例えばメモリを2GB積んだサーバの場合、 > > 2〜3日でメモリが枯渇してしまうのではないかと危惧しています。 > > ちょっと使用量が大きいですね。 > > ちなみにベンチマークするクライアントでは socket.io-client がちゃんと動作 > していますでしょうか? (1000接続をどうシミュレートしたのか気になります。) > > socket.io の heartbeat はサーバから送信する時に毎回 setTimeout() でタイ > マーを登録するので heartbeat が返ってこないとタイムアウト時間(default 60 > 秒)までタイマーが登録されたままです。デバッグ出力に > > debug - got heartbeat packet > debug - cleared heartbeat timeout for client XXXXXX > > とか出力されていますか? >
