Tag: 性能

使用cluster和node-webworker构build高性能的node.js应用程序

我不是一个node.js主,所以我想对此有更多的观点。 我正在创build一个HTTP node.js Web服务器,它不仅能处理大量的并发连接,还能处理长时间运行的作业。 默认情况下,node.js在一个进程上运行,如果有一段代码需要很长时间才能执行任何后续连接,则必须等到代码结束之前连接的操作。 例如: var http = require('http'); http.createServer(function (req, res) { doSomething(); // This takes a long time to execute // Return a response }).listen(1337, "127.0.0.1"); 所以我想使用node-webworker库在单独的线程中运行所有长时间运行的作业: var http = require('http'); var sys = require('sys'); var Worker = require('webworker'); http.createServer(function (req, res) { var w = new Worker('doSomething.js'); // This takes a […]

NodeJs性能问题

我正在使用NodeJs构build一个实时统计应用程序。 对于原型,我在RackSpace服务器中使用了AMD Opteron四核处理器,使用Cluster NodeJs( http://learnboost.github.com/cluster/ )和使用本地nodejs驱动程序的MongoDb对nodejs服务器进行testing。 基本上我已经在我的公司项目中插入了一个JS代码,为一些客户的网站提供内容。 这段代码每隔10秒钟就会“ping”我的服务器,调用一个图像并传递我在服务器端获得的参数,并在MongoDb集合中插入(或更新)参数。 在一天的“慢”时间里,我每次获得大约3000个连接(我在terminal上使用netstat -natp命令获得这些连接),使得我的集群每个核心使用大约25%(我使用“top”命令)。 但是在一个“忙碌”的时候,每次我的集群变得疯狂(每个核心使用大约80%),每次得到大约7000多个连接,而且随着时间的推移,节点退化。 这是正常的吗? 还是应该Nodejs处理这些命中更“容易”的方式? 如果我使用mongoose,性能会增加吗? 如果你对MongoDb很好奇的话,它占用了一个核心的4%,这对我来说是很好的(没有把索引用于大约50%以上,但是至less索引解决了这个性能问题)。 干劲十分感谢,干杯。 编辑: 使插入的代码如下所示:db.open(function(err,db){}); return connect.router(function(app){ app.get("/pingserver/:clientid/:event/:cachecontrol", function(req, res, next){ event:'+req.params.event + ', cachecontrol:' + req.params.cachecontrol); var timestamp = new Date(); switch(req.params.event) { case 'load': var params = url.parse(req.url, true).query; db.collection('clientsessions', function(err, collection) { try { var client = { id: […]

Node.js CPU负载平衡

我使用JMeter创build了testing来testingGhost博客平台的性能。 用Node.js编写的Ghost,安装在1Gb RAM,1个CPU的云服务器上。 我注意到400个并发用户JMeter得到错误。 直到400个并发用户负载正常。 我决定增加CPU并增加1个CPU。 但错误复制和添加2个CPU,共4个CPU。 该问题发生在400个并发用户之后。 我不明白为什么1个CPU可以处理400个用户,4个CPU的处理结果是一样的。 在监视过程中,我注意到只有一个CPU忙,另外三个CPU空闲。 当我在控制台检查JMeter概要时,出现了错误,约有5%的请求。 看截图。 我想知道是否可以平衡CPU之间的负载?

计算素数时NodeJS比D快。 怎么样?

我在D中编写了一个计算素数的简单函数。我认为这很快,计算出素数高达100,000。 但后来我想把它与NodeJS进行比较。 当我第一次运行NodeJS脚本的时候,我惊异于这个差异,双重检查我没有跳过某种计算方法。 但是两者在function上完全相同。 d: import std.stdio; import std.math; import std.datetime; import std.file; import std.array; enum size_t ITERATIONS = 100_000; bool divisible(real n) { real d; for(d = 3; d < floor(n / 2); d += 2) { if(n % d == 0) { return true; } } return false; } void main() { StopWatch […]

Nodejs + phantomjs与纯幻影 – 页面加载时间

我在探索nodejs和phantomjs,并写了一个小代码来测量页面加载时间。 我发现页面加载时间在包装在nodejs中的phantomjs代码与纯幻象代码相比有所不同。 下面是代码:phantomjs和nodejs进行比较: 的NodeJS: var http = require('http'), phantom = require('phantom'); url = require("url"); http.createServer(function (request, response) { var start = Date.now(); request.on('end', function () { phantom.create(function(ph) { ph.createPage(function(page) { var _get = url.parse(request.url, true).query; page.open(_get[url], function(status) { if (status == 'success') { var time = Date.now() – start; console.log(time); } }); }); }); }); […]

Websocket(node.js)连接限制,客户端在达到400-450个连接后断开连接

我有一个与socket.io连接限制大问题。 如果连接数量超过400-450个连接的客户端 (通过浏览器)用户断开连接。 我增加了软硬限制的tcp,但它并没有帮助我。 这个问题只适用于浏览器。 当我尝试通过其他node.js服务器的socket-io-client模块进行连接时,我达到了5000个连接的客户端 。 对我来说这是一个非常大的问题,完全阻止了我。 请帮忙。 更新 我试过用标准的Websocket库(带有node.js的ws模块),问题相似。 我只能达到456个连接的客户端。 更新2 我在几个服务器实例之间分配连接的客户端。 每一个客户端都通过其他端口连接。 不幸的是,这个改变并没有帮助我。 关联用户总数与以前一样。

用java / scala代码连接node.js进程的最快方法

我有一个用java / scala实现的计算库。 而且我还有一点node.js代码服务于我的应用程序。 我需要find一个方法,如何将这两个世界连接起来,获得最大的性能,但也要考虑到简单性。 我正在考虑通过共享内存进行内部进程通信,但在node.js中找不到任何成熟的方法 这应该主要作为代理机制从node.js代码中调用一些java(理想的是任何)代码。 从node.js到java端,只会请求元数据传递,但是从java到node.js,有时它可能是重要的数据返回(比方说100-200 kb作为上边界,大约90-1000字节案件)然而,这个要求的数额可能是重大的。 考虑OpenMP可能是一个选项,但也找不到Node的任何openmp协议实现。 但是对于java也没有明确的项目。 看起来目前有几种select: 本地扩展+ Java不安全(目前通过reflection提取,应该在JDK 9中打开),并且在基于C / C ++的环境中使用共享内存(需要调查和开发,放松节点 – > c – > Java可能高于共享内存的好处) 使用套接字(在Linux上相当快,不知道有关Windows,跨平台) FastCGI(仍然使用套接字转换,所以会比1选项慢) ZeroMQ / Nanomessage作为传输层(再次插槽里面,但简化了开发) @大卫的回答。 但是不能说任何具体的事情。 需要调查。

REST API测量服务器端响应时间(性能)。

我开发了一些基于nodejs的其他API,我想testingAPI的性能。 任何工具都可以轻松地统计每个API调用的时间吗? 或者如何实现测量REST API响应请求所需的时间。

在nodejs和chrome中让vs性能

当我在chrome和nodejs中testing以下代码时,我得到以下内容: 铬: for循环VAR: 24.058ms 用于LET的循环: 8.402ms 的NodeJS: for循环VAR: 4.329ms for循环与LET: 8.727ms 根据我的理解,由于块范围LET是更快的铬。 但有人可以帮我理解为什么它在NodeJS相反? 或者我错过了什么? "use strict"; console.time("for loop with VAR"); for (var i = 0; i < 1000000; i += 1) { // Do nothing } console.timeEnd("for loop with VAR"); console.time("for loop with LET"); for (let i = 0; i < 1000000; i += 1) […]

Node.js GPS设备跟踪性能注意事项

使用node.js作为tcp服务器,我将要pipe理相对较大数量的GPS设备(〜3000设备),并且将第一步存储传入的数据到数据库中,但即使在这个阶段,我也会设想一些性能问题,我和我想在他们咬我之前抓住他们。 1 – 使用java或ruby等语言查看类似的书面服务器我看到如下代码: java的 Thread serverThread = new Thread(() -> { System.out.println("Listening to server port 9000"); while (true) { try { Socket socket = serverSocket.accept(); … ruby require 'socket' server = TCPServer.new ("127.0.0.1",8080) loop do Thread.start(server.accept) do |client| … 他们似乎给每个设备(套接字)连接到tcp服务器单独的线程? 由于node.js是单线程的并且是asynchronous的,所以我应该关心传入的连接或者像下面这样简单的方法来满足大量的同时连接吗? net.createServer(function(device) { device.on('data', function(data) { // parse data // store in database }); […]