日 期:2014-11-12
测试目的
测试页面的负载量
测试范围
express +ejs
helloworld 界面
测试环境
![](https://img.haomeiwen.com/i54009/09e5ed538fad15fe.png)
![](https://img.haomeiwen.com/i54009/f14e94ba28e4eceb.png)
![](https://img.haomeiwen.com/i54009/5216be59d9de98ae.png)
测试准备
数据准备
无参数化或需要特殊处理字段。
脚本准备
LR编写测试脚本。
Node 安装
npm install pm2 -g --unsafe-perm (安装)
cd /data/node/resources/node-serve
npm install express
npm install ejs
npm kill
pm2 start start.js -i 8 (启动8个线程)
测试结果如下:
![](https://img.haomeiwen.com/i54009/855654987535c4e2.png)
总结:
- Node启单线程tps平均610笔/s,启8线程跑tps可达3891笔/s。
- 建议Node服务启动线程数与服务器核数一致。
- 主要瓶颈在node消耗cpu较大上,无论node迁移到单独虚拟机,还是和Jetty同台虚拟机,cpu都基本耗尽,cpu负载在8+。
测试详情
数据展示页-100vu-Node单线程
Node启单个线程(jetty+nginx+Node在一台虚拟机),模拟100用户压测TPS平均638笔/s,Cpu负载较小,node进程cpu用尽,其他资源使用较小,详细见下图:
![](https://img.haomeiwen.com/i54009/833d8ebc45e59751.png)
数据展示页-200vu-Node8线程
Node启8个线程(jetty+nginx+Node在一台虚拟机),模拟200用户压测TPS平均3891笔/s,Cpu负载9,cpu使用充分(无idle)主要是Node进程消耗cpu,其他资源使用较小,详细见下图:
![](https://img.haomeiwen.com/i54009/febe1b66057352f6.png)
数据展示页-200vu-8线程-单Node
Node单台虚拟机测试200用户,TPS平均4016笔/s,平均响应时间0.049s,服务器182负载较小,cpu_usr 12%,网络流量recv左右;node服务器cpu基本用光,cpu负载8。
![](https://img.haomeiwen.com/i54009/7027bc1e2b863684.png)
![](https://img.haomeiwen.com/i54009/8c5a1bd5d1f68a8b.png)
结论
nodejs 在内存和响应速度上的表现都非常好,但是cpu占用过高了,如果pm2 只开启6个进程,cpu的占用率会在85%以下,那么问题来了,怎么降低 CPU的使用率,在大型的项目中是怎么处理的?
网友评论
想问下 你的helloworld是怎么写的。
或者写一个底层插件是空跑的,让这个插件对CPU做释放?但这有点反设计了。。。