2013-07-19 51 views
4
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),斷開所有客戶端後,內存仍然很高。任何幫助?客戶端斷開後,Socket.io內存不會丟失

我讀到的所有文章/答案都是關於早期版本的節點或socket.io。我非常渴望找到解決方案。

+0

內存被垃圾收集器定期清理。 – user568109

+0

我爲此等了半個小時。這怎麼可能? –

+2

65 MB不夠高,無法啓動垃圾收集器,垃圾收集可能會降低服務器速度。最有可能的情況是它會在幾百mbs(對於不同的節點版本,這個值可能會不同)之後停留在那裏,因爲舊的連接被刪除。 – user568109

回答

0

我正在使用nodetime來跟蹤內存使用情況,好像它有內存泄漏。節點時間結束後,內存消耗保持穩定。

0

我有類似的問題與socket.io。看起來,一旦客戶端連接,它永遠不會從socket.io中刪除。

您可以調試SocketIoServer.sockets.sockets的值。它是一個包含所有連接(和斷開的套接字)的數組。也許這就是你的內存泄漏所在。

另外,我剛纔看到socket.io發佈了1.0版本。你可以嘗試一下,看看它是否已經解決了這個問題。

+0

我檢查了一下,這並沒有發生在我身上 –