alinode与node性能测试方法与分析
需求和技术指标整理
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) 见图1 |
connections:10 见图3 connections:1000 见图4 |
官方node |
Node.js 10.16.3 on Linux 64-bit 见图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性能测试方法与分析的更多相关文章
- 转——Android应用开发性能优化完全分析
[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...
- Android 应用开发性能优化完全分析
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
- 【转】Android应用开发性能优化完全分析
http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关 ...
- Android应用开发性能优化完全分析
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
- nginx / apache / tomcat /resin等 http server的benchmark性能测试方法
性能测试是软件产品发布前必经阶段,对于web app的发布需要使用http server,可选择的优秀免费http server主要有开源apache server, 俄国的nginx,专用于java ...
- Kafka设计解析(五)Kafka性能测试方法及Benchmark报告
转载自 技术世界,原文链接 Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告 摘要 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafk ...
- 转:Android应用开发性能优化完全分析
转自:http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜 ...
- 如何使用工具进行线上 PHP 性能追踪及分析?
工作了一两年的 PHPer 大概都多多少少知道一些性能分析的工具,比如 Xdebug.xhprof.New Relic .OneAPM.使用基于 Xdebug 进行 PHP 的性能分析,对于本地开发环 ...
- 转:使用xhprof进行线上PHP性能追踪及分析
原文来自于:http://avnpc.com/pages/profiler-php-performance-online-by-xhprof 原创作者:AlloVince 之前一直使用基于Xdebug ...
随机推荐
- Flink 编程接口
欢迎来 kk大数据,今天分享的是 Flink 提供了哪些编程接口可以给我们开发. 一.数据集类型 现实世界中,所有的数据都是以流式的形态产生的,不管是哪里产生的数据,在产生的过程中都是一条条地生成,最 ...
- 更改hadoop集群yarn的webui中的开始时间和结束时间为本地时间
yarn集群的webui地址为:http://rm:8088 执行任务后,任务的开始时间和结束时间都是utc时间,查看很不方便. 查找相关资料发现hadoop有补丁包,补丁地址:https://iss ...
- 微信小程序开发简述
微信小程序简述 什么是微信小程序? 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用.全面开放 ...
- Jmeter BeanShell 执行多次问题,每发送一次请求执行一次BeanShell问题
前言:(此问题耗时半天) 提供解决思路的博主又有新问题了. 如图所示,写了一个BeanShell从文件中去获取值之后给测试计划的变量赋值. 问题来了,当禁用b的情况下,a只执行一次.当启用b请求的情况 ...
- 初识PE文件结构
前言 目前网络上有关PE文件结构说明的文章太多了,自己的这篇文章只是单纯的记录自己对PE文件结构的学习.理解和总结. 基础概念 PE(Portable Executable:可移植的执行体)是Win3 ...
- RecyclerView实现Gallery画廊效果
使用RecyclerView实现一个画廊效果,主要是使用support库中最新加入的PagerSnapHelper类,通过计算滑动偏移来计算scale的值. 基本实现 首先需要为RecyclerVie ...
- 品Spring:真没想到,三十步才能完成一个bean实例的创建
在容器启动快完成时,会把所有的单例bean进行实例化,也可以叫做预先实例化. 这样做的好处之一是,可以及早地发现问题,及早的抛出异常,及早地解决掉. 本文就来看下整个的实例化过程.其实还是比较繁琐的. ...
- SpringBoot注入Mapper失败
SpringBoot注入Mapper失败,可能是因为没有加扫描Mapper层的注解 方式一:在所有mapper接口使用@Mapper注解 @Mapper public interface UserMa ...
- 数据的异构实战(一) 基于canal进行日志的订阅和转换
什么是数据的异构处理.简单说就是为了满足我们业务的扩展性,将数据从某种特定的格式转换到新的数据格式中来. 为什么会有这种需求出现呢? 传统的企业中,主要都是将数据存储在了关系型数据库中,例如说MySQ ...
- 网络下载器 Internet Download Manager v6.35.5 绿色便携版
Internet Download Manager,简称 IDM,是国外的一款优秀网络下载工具.目前凭借着下载计算的速度优势在外媒网站中均受好评,现在已被多数国人熟知.Internet Downloa ...