Logo Vincent
返回文章列表

Node.js-WebServer开发实践:使用PM2-Cluster模式提升接口QPS

Node.js
Node.js-WebServer开发实践:使用PM2-Cluster模式提升接口QPS

【前言】

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依次下降

【结论】

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