Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js应用程序在24小时后运行缓慢,原因可能是什么?_Javascript_Node.js_Box2dweb - Fatal编程技术网

Javascript Node.js应用程序在24小时后运行缓慢,原因可能是什么?

Javascript Node.js应用程序在24小时后运行缓慢,原因可能是什么?,javascript,node.js,box2dweb,Javascript,Node.js,Box2dweb,我正在开发多人游戏,服务器端是用node.js和box2dweb编写的。服务器位于aws的Ubuntu15LTS(1GB内存)虚拟机上。当我在前几个小时内启动游戏时,游戏运行良好,但在~24小时后,游戏速度减慢,即使在过去22小时内没有人玩过,最后一个对象是23小时前生成的。我曾尝试使用node.js profiler,但在启动应用程序和应用程序运行一天后,我得到了非常相似的结果。我该怎么办?我的问题可能的原因是什么 我监控了10分钟内函数的时间使用情况,结果如下: gamelogic.upda

我正在开发多人游戏,服务器端是用node.js和box2dweb编写的。服务器位于aws的Ubuntu15LTS(1GB内存)虚拟机上。当我在前几个小时内启动游戏时,游戏运行良好,但在~24小时后,游戏速度减慢,即使在过去22小时内没有人玩过,最后一个对象是23小时前生成的。我曾尝试使用node.js profiler,但在启动应用程序和应用程序运行一天后,我得到了非常相似的结果。我该怎么办?我的问题可能的原因是什么

我监控了10分钟内函数的时间使用情况,结果如下:

gamelogic.update()~40%

b2dWorld.update()~47%

我的profiller代码:

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分钟后,CPU使用率为10%,RAM使用率为8% -运行4天后,80%的CPU使用率和30%的RAM使用率

在测量时,我在游戏中有相同数量的游戏对象+一名玩家连接到服务器


我从node.js(node:1324)收到此消息警告:检测到可能的EventEmitter内存泄漏。添加了11个upgradeRequest侦听器。请使用emitter.setMaxListeners()增加限制“删除调用太多相同侦听器的套接字后,此套接字中的垃圾会保留吗

你说你看了探查器,你监控了哪些指标?CPU和RAM?因为随着时间的推移,内存的使用会因内存泄漏而增加。让我们知道您知道哪些指标是相同的。我只查看了每个函数的时间使用百分比。首先查看10分钟后和24小时后
top
ps
的输出,然后检查进程大小和CPU使用情况。另外,服务器上是否有其他东西可能会让您的节点进程被替换掉?你的节点服务器做什么?它是CPU限制的、I/O限制的吗?它使用数据库吗?使用newrelic及其打包和监视/配置您的东西(;@jcaron在此服务器上只是我的一个游戏和一个node.js进程。我有英特尔至强系列处理器,速度高达3.3 GHz。我不使用任何数据库。我有3天的进程,我可以看到10分钟后释放的进程与长时间运行的进程相比,我使用的进程和1/3 ram要少得多。你说你看了探查器,什么t您监控的指标?CPU和RAM?因为随着时间的推移,RAM的使用会因内存泄漏而增加。让我们知道您知道的指标是相同的。我只查看了每个函数的时间使用百分比。首先,在10分钟后和24小时后查看
top
ps
的输出,然后检查p进程大小和CPU使用率。此外,服务器上是否有其他东西可能会让您的节点进程被替换掉?节点服务器做什么?它是CPU绑定的、I/O绑定的吗?它是否使用数据库?使用newrelic及其包和监视/配置您的东西(;@jcaron在此服务器上只是我的一个游戏和一个节点.js进程。我有英特尔至强系列处理器,速度高达3.3 GHz。我不使用任何数据库。我有3天的进程,我可以看到,与长时间运行的进程相比,在10分钟后释放进程后,我使用的进程和1/3 ram要少得多。