1360170
大家好,一直想用node.js的Net模块来实现一个高密集IO和并发的“中转服务器”,但是发现内存泄漏特别严重; 我用最原始的简单Socket测试,发现服务器内存也是一样的疯狂增长,具体如下所示: 服务器主类Application.js:
- var fs = require('fs');
- Application =
- {
-
mServerApp : null, -
StartLocalListen:function() -
{ -
this.mServerApp.listen(15002, "127.0.0.1"); -
console.log("listen on port="+15002); -
}, -
CreateTCPServer:function() -
{ -
this.mServerApp = require('net').createServer(); -
this.mServerApp.on('connection', function(socket) -
{ -
socket.on('data', function(data){ delete data;data=null; }); -
socket.on('close', function(){ -
socket.end(); -
socket.destroy(); -
delete socket; -
socket = null; -
}); -
socket.on('error', function(){ }); -
}); -
}, -
Start:function() -
{ -
this.CreateTCPServer(); -
this.StartLocalListen(); -
console.log("start "); -
} - };
- var path = require('path');
- var pidfile = path.join(__dirname, 'app.pid');
- fs.writeFileSync(pidfile, process.pid);
- process.on('SIGTERM', function() {
- if (fs.existsSync(pidfile))
-
fs.unlinkSync(pidfile); - process.exit(0);
- });
- process.on('uncaughtException', function (err) {
- console.log(err);
-
//process.exit(0); - });
- Application.Start();
服务器的测试代码就是这么简单,监听客户端连接,数据和关闭消息而已。 而客户端就是简单创建连接(100个),然后随意发送数据,关闭而已。 现在发现每次模拟多个连接发送数据,断开之后,服务器的内存都会增加,且永远不释放,且每次有新连接进来就增加。 好神奇的内存泄漏啊,请各位大神帮忙看看,太感谢了。