Tag: 性能

我应该为node.js使用哪个渲染/模板引擎?

现在,我在我的节点快递中使用jqtpl。 但是,我的同事说在负载testing中花了很多的内存。 所以: 这是快递或渲染引擎的问题吗? 是否有任何configuration(如视图caching)我应该做的,以减less内存使用情况? 不同的渲染引擎的特点是什么? 如玉,jqtpl,ejs等等 请指教。

运行StatsD时node.js 100%cpu利用率

我想用我做的一些压力testing来testingStatsD性能。 最终我发现当每秒钟有80,000个数据包时,Node.js在我的环境中达到了100%的cpu利用率。 我知道每秒8万事件是相当多的事件,但是我想知道有没有人知道StatsD在Node.js中的限制。 什么是正常事件率? 另外,有什么我可以做imporve Node.js性能,所以它不会达到100%的CPU利用率?

节点js事件监听器。 使用匿名callback或声明的function性能?

我在Node.js中编写一个处理来自多个连接的传入数据的TCP服务器。 服务器parsing传入的数据stream并返回存储在数据库中的对象。 我试图做一些性能优化,并testing了两种编码方法: 代码片段1使用嵌套的匿名callback。 代码片断2使用声明的函数来replace匿名callback。 我认为snippet 2会更快,因为它避免了为每个新的传入数据包创build新的函数对象。 然而,在现实生活中,代码片段1似乎快了20%。 有谁知道为什么? 代码片段1: function TcpOnConnection (stream) { stream.on("data", function(data) { parseTcp(data,function(err,obj) { if (err) console.log(err.message); if (obj) { stream.write(obj.returnMsg); storeData(obj); } }); }); } TCPserver.on("connection",TcpOnConnection); 代码片段2: function TcpOnConnection (stream) { function handleParsed(err,obj) { if (err) console.log(err.message); if (obj) { stream.write(obj.returnMsg); storeData(obj); } } function StreamOnData(data) { parseTcp(data,handleParsed); } […]

将Node.js应用程序扩展为数千个同时连接

我们在一个应用程序上做了一些工作,可以让人们通过互联网来打棒球。 它完全存在于亚马逊的AWS生态系统中,我们正在为一个新项目而构build。 该堆栈包括: – 专用的MongoDB和Redis服务器 – 三组不同的nodejs服务器 – 我们正在利用Amazon的API来进行服务器configuration和自动调节 我们面临的问题是,我们还没有能够模拟每个实例超过约15000个并发用户(websocket连接)。 我们应该得到更多; 我们认为是十万分之一。 服务器CPU使用率只有40%。 有关如何扩展node.js应用程序的任何想法,使它有更多的同时连接到一台服务器?

基准Nodejs项目

我正在尝试构build一个nodejs Web应用程序。 当我添加更多的代码时,最好有一种方法来testing这种改变对性能的影响,如果可能的话,我的应用程序花费最多的时间。 目前我正在使用mocha作为我的testing框架,我可以从中得到一些基准testing信息,因为它会报告每个testing需要多less时间。 不过,我最终偶尔编辑testing,使我以前的所有基准无效。 我想知道是否有人有任何build议nodejs模块或方法如何做到这一点。

嵌套Lodash forEach

我有一个相当深的内存数据库,我想,我已经find了最好的代码实现,如果有人有一个更好的方法来做一个双重forEach循环在lodash中,或者如果我用它错了某种方式将是伟大的知道。 物体: smallDB = { user1:{ permissions:[], locations:[ {ip:'0.0.0.0',messages:[]}, {ip:'',messages:[]} ] }, user2:{ permissions:[], locations:[ {ip:'0.0.0.0',messages:[]}, {ip:'0.0.1.0',messages:[{mid:'a unique id','user':'the sender',message:'the text of the message'}]} ] } } 发送一条消息我使用: ld.forEach smallDB, (a)-> ld.forEach a.locations, (b)-> b.messages.push {mid,user,message} 我只是想确保这是将消息添加到miniDB中的所有用户以及所有位置的最佳方式

ArangoDB插入非常缓慢

我刚刚从版本1.4到2.1.1并注意到改进,但插入速度仍然非常慢,插入更多的文档会变慢。 我正在从旧数据库迁移到新的并一次插入1000。 这里有一些日志供你阅读: ========= [26.28s] BATCH #1 [0s] ========= [0s] CREATED: 1000 [0s] UPDATED: 0 [0s] SUBTOTAL: 1000 [0s] BATCH TIME: 26.279s [0s] TOTAL BATCH TIME: 26.279s [0s] AVG TIME PER BATCH: 26.279s [0s] TOTAL TIME: 29.277s [0s] ========= [29.919s] BATCH #2 [0.001s] ========= [0s] CREATED: 2000 [0s] UPDATED: 0 [0s] SUBTOTAL: 2000 [0s] BATCH […]

同时调用setTimeout会导致比预期更多的延迟

我正在做一个Node性能的小演示,很惊讶地发现下面的例子中,有50个setTimeout并发调用需要4秒而不是500ms。 下面的代码设置了一个非常简单的express服务器,它侦听所有请求,并在稍后使用setTimeout来响应500ms。 然后它有一个客户端,通过传递50个请求来跟踪请求和相应的响应。 // SERVER var express = require('express'); var app = express(); app.get('*', function (req, res) { setTimeout(function () { return res.send(req.query.i); }, 500); }); app.listen(8099); // CLIENT var http = require('http'); function start() { for (var i = 0; i < 50; i++) { console.log(new Date().getSeconds() + ':' + new Date().getMilliseconds() + ' […]

NodeJS:一个全局事件发射器或它自己的每个模块?

我目前正计划在NodeJS中创build一个浏览器游戏。 游戏将基本上使用事件模块之间的每个通信。 什么是更高性能(或有优点或缺点?): 我只使用一个(全球?)EventEmitter。 每个模块都可以监听全局事件stream或者在全局事件stream中发送事件。 我会使用更复杂的事件名称,所以当事件被触发时,并不是全局事件stream中的所有侦听器都被调用。 我在单个事件stream上拥有非常多的侦听器。 例如:Player1收到一个项目。 事件“player1:inventory:item”被触发,并且只有player1在全局事件stream上监听该事件。 要么 它自己的每个模块扩展events.EventEmitter,并只提供该特定对象的事件。 每个EventEmitter上的监听器数量非常低,大部分时间只有一个监听器。 例如:一个玩家有一个questlog和一个库存。 对于每个玩家我创build一个questlog和库存的实例,把它们保存在一个集合(或玩家对象)中。 player1的任务日志只监听player1的库存。 我没有NodeJS中的EventEmitter的经验,只知道有一个警告,因为内存泄漏,在一个eventemitter或event上有10多个listener,但我不知道为什么。 我在这两个系统上看到了一些优点和缺点,但在技术方面我需要build议。 感谢您的帮助!

如何提高nodejs / socket的IO性能?

我已经build立了一个小游戏的服务器。 客户端以一定的时间间隔向服务器发送移动数据。 服务器也会以一定的时间间隔向客户端发送关于其他玩家的数据。 如果我添加更多的球员,performance会变得更糟。 我现在如何改善performance? 发送单个属性而不是对象会提高速度吗? 我可以通过使用更大的间隔来创build更稳定的性能吗? 或者你有其他的想法? 有没有一个debugging工具来检查哪些服务器操作减慢服务器下来?