返回文章列表
Node.js-WebServer开发实践:使用PM2-Cluster模式提升接口QPS
Node.js
【前言】
pm2是nodejs进程管理工具, https://pm2.keymetrics.io/
介绍详见之前的一篇文章: https://blog.csdn.net/uikoo9/article/details/79018750 ,
本文介绍下pm2的cluster模式,
并使用pm2的cluster模式来提升nodejs接口的QPS。
【autocannon】
接口的压测工具使用autocannon,
具体介绍详见: https://blog.insistime.com/nodejs-autocannon
测试代码详见: https://github.com/uikoo9/qiao-z-autocannon
测试框架为qiao-z: https://qiao-z.vincentqiao.com/#/
【压测接口】
下载代码
https://github.com/uikoo9/qiao-z-autocannon
启动服务
# 安装
npm i
# 启动
npm run qz
压测
以qiao-z中res.send接口为例
autocannon -p 1 -c 10 -d 10 http://localhost:9999/res-send
压测结果:66791.28

【pm2 cluster】
使用pm2 cluster模式启动上面的服务,
先启动2个实例,
pm2 start qz.js -i 2
再次压测结果:100192

类似的使用pm2的cluster模式启动从2个实例到最多实例,
依次压测并记录,如下:

可以看到趋势为:2个实例是qps最高,2-8依次下降

【结论】
- 使用pm2 cluster模式启动单机多nodejs实例后,接口QPS提升
- 从nodejs单实例到pm2 cluster的2个实例,QPS提升50%左右
- pm2 cluster实例增加,QPS并没有增加
- #3主要考虑pm2 cluster,或者说nodejs cluster实例间通信的消耗
- 最佳实践要在对应的服务器上测试后得出结论