Articles of 性能

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 }); […]

Redis性能问题?

我试图把一些沉重的负载放在我的Redis上进行testing,并找出任何上限。 首先我加载了大小为32个字符的大小为32个字符的50,000和100,000个键。 这两个关键尺寸都花了不到8-15秒。 现在我试着把4kb的数据作为每个键的值。 首先10000个按键需要800毫秒设置。 但是从这个angular度来看,它逐渐变慢,设置5万个键需要40分钟。 我正在用node_redis(Mranney)加载数据库。 我正在做什么错误,或者是Redis的大小是4 KB? 我现在发现的另一件事情是,当我运行另一个客户端并行到当前一个,并更新密钥第二客户端完成在8秒内加载4万个值的50000密钥,而第一个客户端仍然永远做它的事情。 这是在节点或Redis库中的错误? 这是令人震惊的,不能接受的生产。

我如何更快地匹配这个文本?

我正在为名字build立一个自动build议。 当用户在文本框中input时,它会碰到服务器并运行: var names = [ list of 1000 names ]; //I have a list of 1000 names, this is static. var query = 'alex'; var matched_names = []; //This is when it gets slow…. names.forEach(function(name){ if(name.indexOf(query) >= 0){ matched_names.push(name); } }); return matched_names; 我怎样才能使这个更快? 我正在使用Node.js