我有一个NodeJs应用程序,它通过Redis服务器上的订阅监听消息。它会收集消息持续5秒钟,然后将其推送到连接的客户端,代码如下所示:
io.sockets.on('connection', function (socket) {
nClients++;
console.log("Number of clients connected " + nClients);
socket.on('disconnect', function () {
nClients--;
console.log("Number of clients remaining " + nClients);
});
});
接收消息发送给客户端
cli_sub.on("message",function(channel,message) {
oo = JSON.parse(message);
ablv_last_message[oo[0]["base"]+"_"+oo[0]["alt"]] = message;
});
setInterval(function() {
Object.keys(ablv_last_message).forEach( function(key) {
io.sockets.emit('ablv', ablv_last_message[key]);
});
ablv_last_message = [];
}, 5000);
找到的解决方案(至少我是这样认为的):节点没有因为达到某些内部内存限制而崩溃,看起来好像由于我的VPS内存不足而崩溃了,它也是一个2GB VPS,也在运行一个或两个其他进程。将其升级到4GB之后,Node可以平稳运行,是的,总是在1.6到2.0 GB左右,但是我相信是在这里工作的GC。
最好尝试使用一些工具来查找node.js中的泄漏。
查找泄漏的工具
从跟踪Node.js中的内存泄漏开始– Node.JS假期。
还有另一个博客
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句