需求和技术指标整理

node服务在引入node性能监控过程中,需要使用alinode,为了对alinode与官方node各项性能指标的差异有进一步的认识,现开展以下调研、测试.

原理性分析

alinode是基于官方node做封装,官方解释是alinode对性能影响可以忽略.

测试方案

1、node版本

Node.js 10.16.3 on Linux 64-bit

2、Linux系统

uname -a

2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

3、 测试代码

循环:

const Benchmark = require('benchmark');
let suite = new Benchmark.Suite('foo', {});
console.log(String(Benchmark.platform));
const arr = new Array(100000).fill(1);
const arr = [] suite.add('for_normal', () => { for (let i = 0; i < arr.length; i++) { }})
.add('for正序-inTurn', () => { for (let i = 0, len = arr.length; i < len; i++) { } })
.add('for倒序-invertedOrder', () => { for (let i = arr.length; i--;) { } })
.add('for_in', () => { for (let i in arr) { } })
.add('for_of', () => { for (let i of arr) { } })
.add('for_map', () => { arr.map(item => { }) })
.add('for_each', () => { arr.forEach(item => { }) })
.add('for_while', () => { let i = 0; let len = arr.length; while (i < len) { i++ } })
.add('while_normal', () => { let i = 0; while (i < arr.length) { i++ } })
.on('cycle', event => { console.log(String(event.target)); })
.on('complete', function () {
const fastest = this.filter('fastest').map('name');
console.log(`Fastest is ${fastest}`); })
.run({ 'async': true });

接口:

const http = require('http'); 

http.createServer((req, res) => {
res.writeHead(200, {'content-type':'text/plain'});
res.end('hello world');})
.listen(3002)
console.log('Server running at http://127.0.0.1:8888/');

4、测试工具

clinic 、autocannon

 
#循环
clinic doctor -- node index.js # connections:10
autocannon http://127.0.0.1:3002 -c 10 # connections:1000
autocannon http://127.0.0.1:3002 -c 1000

测试数据结果

注:12,978 ops/sec每秒执行次数;±0.60% 方差;94 runs sampled 样本

node类型 Node.js 10.16.3循环计算 I/O Node.js 10.16.3
alinode

Node.js 10.16.3 on Linux 64-bit

for_normal x 13,087 ops/sec ±0.68% (94 runs sampled)
for正序-inTurn x 12,976 ops/sec ±0.96% (88 runs sampled)
for倒序-invertedOrder x 13,169 ops/sec ±0.84% (95 runs sampled)
for_in x 80.03 ops/sec ±1.60% (70 runs sampled)
for_of x 890 ops/sec ±1.09% (89 runs sampled)
for_map x 64.73 ops/sec ±0.75% (66 runs sampled)
for_each x 741 ops/sec ±0.64% (92 runs sampled)
for_while x 12,945 ops/sec ±0.94% (93 runs sampled)
while_normal x 12,904 ops/sec ±0.77% (92 runs sampled)
Fastest is for倒序-invertedOrder

 见图1

connections:10

见图3

connections:1000

见图4

官方node

Node.js 10.16.3 on Linux 64-bit
for_normal x 15,697 ops/sec ±3.54% (75 runs sampled)
for正序-inTurn x 12,590 ops/sec ±1.78% (83 runs sampled)
for倒序-invertedOrder x 11,926 ops/sec ±3.29% (78 runs sampled)
for_in x 61.22 ops/sec ±4.13% (53 runs sampled)
for_of x 720 ops/sec ±3.53% (73 runs sampled)
for_map x 52.43 ops/sec ±4.52% (54 runs sampled)
for_each x 617 ops/sec ±3.31% (78 runs sampled)
for_while x 12,124 ops/sec ±3.03% (80 runs sampled)
while_normal x 15,735 ops/sec ±3.69% (79 runs sampled)
Fastest is while_normal,for_normal

见图2

connections:10

见图5

connections:1000

见图6

 图1

图2

图3

 

图4

图5

 

图6

测试结果分析

cpu计算上,alinode略优于普通node,但是不明显;

从网络I/O上看,alinode的延迟性低,每秒处理请求数的性能要优于官方node,数据见下表.

Node 并发10 并发1000 备注
延迟平均值(ms) 延迟标准样本差(ms) 每秒请求数(req/sec) req/sec样本标准差 延迟平均值(ms) 延迟标准样本差(ms) 每秒请求数(req/sec) req/sec样本标准差  
alinode 0.02 0.18 32678.91 8410 32.79 8.81 30114.91 3449.49  
官方node 0.08 0.42 18614.6 4850 53.91 17.95 18430.19 2982.79  

对于生产中的性能待进一步的论证.如有错误,欢迎批评指正.

alinode与node性能测试方法与分析的更多相关文章

  1. 转——Android应用开发性能优化完全分析

    [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...

  2. Android 应用开发性能优化完全分析

    1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...

  3. 【转】Android应用开发性能优化完全分析

    http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关 ...

  4. Android应用开发性能优化完全分析

    1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...

  5. nginx / apache / tomcat /resin等 http server的benchmark性能测试方法

    性能测试是软件产品发布前必经阶段,对于web app的发布需要使用http server,可选择的优秀免费http server主要有开源apache server, 俄国的nginx,专用于java ...

  6. Kafka设计解析(五)Kafka性能测试方法及Benchmark报告

    转载自 技术世界,原文链接 Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告 摘要 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafk ...

  7. 转:Android应用开发性能优化完全分析

    转自:http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜 ...

  8. 如何使用工具进行线上 PHP 性能追踪及分析?

    工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug.xhprof.New Relic .OneAPM.使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环 ...

  9. 转:使用xhprof进行线上PHP性能追踪及分析

    原文来自于:http://avnpc.com/pages/profiler-php-performance-online-by-xhprof 原创作者:AlloVince 之前一直使用基于Xdebug ...

随机推荐

  1. Tcloud 云测平台-多服务框架开源

    技术栈 Python3.7 + Vue前端github地址:https://github.com/bigbaser/Tcloud后端github地址:https://github.com/bigbas ...

  2. java http/https后台上传服务器视频到接口

    没有代码得帖子都是耍流氓,废话不说,上代码 //上传视频    public static HttpEntity getMultiDefaultFileEntity(String pathlj,Str ...

  3. .Net WCF服务部署IIS详细解析

    官方解析:Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台.整合了原有的windows通 ...

  4. 一起看期待已久的.NET Core 3.0新的单文件部署特性,记在昨日VS2019更新后

    VS2019又又又迎来一次新的更新,这次的重点在.NET Core, 妥妥的更新好,默默地反选2.2,一切都在意料之中. 这次我们来看VS2019的新特性单文件部署: https://www.talk ...

  5. 一步步构建.NET Core Web应用程序---基本项目结构

    前言 随着.NET Core日益成熟, 我作为C#&.NET体系中的一份子也加入了.NET Core 这一体系中,随着不断学习, 接触到的各种框架日益庞杂,接下来我会由一个新手的角度把整个基于 ...

  6. ELK搭建实时日志分析平台

    ELK搭建实时日志分析平台 导言 ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成,ELK平台可以同时实现日志收集.日志搜索和日志分析的功能.对于生产环境中海量日志 ...

  7. Spring 梳理 - AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)

    Spring  AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect)   1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是 ...

  8. 单例模式-全局可用的 context 对象,这一篇就够了

    单例模式在各个方面都有着极为广泛的使用,所谓单例,顾名思义就是整个程序中只有一个该类的实例,所以它成功保证了整个程序的生命周期内该类的对象只能创建一次,并且提供全局唯一访问该类的方法:getInsta ...

  9. Java基础学习笔记(三) - 抽象类和接口

    一.抽象类 没有方法主体的方法称为抽象方法,包含抽象方法的类就是抽象类. Java中使用 abstract 关键字修饰方法和类,抽象方法只有一个方法名,没有方法体. public abstract c ...

  10. Fast Earth - 文本 绘制,如何实现三维空间中绘制屏幕大小的文字?

    如题:先上一张图,在说是如何实现的 实现上图效果,有如下三种方式: 1. 屏幕坐标绘制点要素,即将经纬度坐标转换成屏幕坐标方式绘制,大多数GIS系统都是采用这种方式: 优点:实现方式简单,效果较好 缺 ...