我'我正在开发多人游戏,服务器端用node.ds和box2dweb编写。服务器位于它的ubuntu 15 LTS(1GB RAM)虚拟机上。当我在几个小时内开始游戏时,游戏运行良好,但是在大约24小时后游戏速度减慢,即使在最近22小时内没有人玩过,最后一个对象在23小时前产生。我尝试使用node.js探查器,但是当我启动应用程序和应用程序工作一天后,我的结果非常相似。我该怎么办?我的问题可能的原因是什么?
我在10分钟内监控了功能的时间使用情况,结果如下:
gamelogic.update()~40%
b2dWorld.update()~47%
我的专业代码:
var profiler = require('v8-profiler');
var fs = require('fs');
var startProfiling = function(duration){
profiler.startProfiling('1', true);
setTimeout(function(){
var profile1 = profiler.stopProfiling('1');
profile1.export(function(error, result) {
fs.writeFile('./profile.cpuprofile', result);
profile1.delete();
console.log("Profile saved.");
});
},duration);
}
setTimeout(function(){
startProfiling(1000 * 60 * 10);
},1000 * 60 * 60 * 24);
我应该在删除套接字之前停止在socekt上监听套接字事件吗?
bash shell中的最佳结果: - 运行10分钟后10%CPU使用率和8%RAM使用率 - 运行80%CPU使用率和30%RAM使用率4天后
测量时我在游戏中拥有相同数量的游戏对象+一个连接到服务器的玩家。
我收到来自node.js"(node:1324)的消息警告:检测到可能的EventEmitter内存泄漏。 11个upgradeRequest监听器添加了。使用emitter.setMaxListeners()来增加限制"在删除需要太多同一个监听器的套接字之后从这个停留垃圾吗?