5
var server = require('socket.io').listen(1781);
server.set('log level', 1);

setInterval(function() {
    console.log(process.memoryUsage());
}, 60000);

Socket.io 0.9.16 および Node 0.10.12 / 0.10.13 アプリケーションでメモリ リークが発生しました。一部のクライアントを接続した後、RSS メモリが増加しますが、それらを切断してもメモリが低下しません。間違いを排除するために、アプリを上のコードまで削除しました。1000 台のクライアントを接続した後、プロセスには 65MB かかり (最初は ~15MB かかりました)、すべてのクライアントを切断した後もメモリは高いままです。何か助けはありますか?

私が読んだすべての記事/回答は、node または socket.io の以前のバージョンに関するものでした。私はこれについて解決策を見つけることに必死です。

4

2 に答える 2

0

メモリ使用量を追跡するために nodetime を使用していましたが、メモリ リークが発生したようです。nodetime を廃止した後、メモリ消費量は安定しました。

于 2014-06-01T07:22:42.477 に答える
0

socket.io で同様の問題が発生しました。クライアントが接続すると、socket.io から削除されることはないようです。

SocketIoServer.sockets.sockets の値をデバッグできます。これは、接続されている (および切断されている) すべてのソケットを含む配列です。多分それはあなたのメモリリークがどこにあるかです。

また、socket.io がバージョン 1.0 をリリースしたのを見たところです。試してみて、その問題が解決したかどうかを確認できます。

于 2014-06-01T00:30:45.990 に答える