阿里云部署pm2集群多核不利用问题
发布于 8 年前 作者 seeyoup 6175 次浏览 来自 问答

目前是使用阿里云2台8核16G内存5M带宽ESC,2台RDS,所有ESC服务器都是简单的安装了node4.2.4(64位),且尚无做任何配置;

使用PM2,测试官网NODE示例:

const http = require('http');
const hostname = '127.0.0.1';
const port = 1337;
http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

使用PM2启动单个线程:

┌──────────┬────┬──────┬──────┬────────┬──────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────┼────┼──────┼──────┼────────┼──────┤
│ test │ 0 │ fork │ 3431 │ online │ 0 │ 0s │ 5.031 MB │ disabled │
└──────────┴────┴──────┴──────┴────────┴──────┘

使用压力测试并发为:

webbench -c100 -t5 http://localhost:1337/

测试结果为:

Speed=259200 pages/min, 434191 bytes/sec.

使用PM2开启8个线程同时监听1337端口服务:

┌──────────┬────┬─────────┬──────┬────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
├──────────┼────┼─────────┼──────┼──────── ──────────┤
│ test │ 0 │ cluster │ 3694 │ online │ 0 │ 0s │ 20.605 MB │ disabled │
│ test │ 1 │ cluster │ 3699 │ online │ 0 │ 0s │ 20.648 MB │ disabled │
│ test │ 2 │ cluster │ 3704 │ online │ 0 │ 0s │ 18.617 MB │ disabled │
│ test │ 3 │ cluster │ 3715 │ online │ 0 │ 0s │ 18.656 MB │ disabled │
│ test │ 4 │ cluster │ 3724 │ online │ 0 │ 0s │ 18.664 MB │ disabled │
│ test │ 5 │ cluster │ 3733 │ online │ 0 │ 0s │ 20.582 MB │ disabled │
│ test │ 6 │ cluster │ 3742 │ online │ 0 │ 0s │ 17.852 MB │ disabled │
│ test │ 7 │ cluster │ 3751 │ online │ 0 │ 0s │ 14.590 MB │ disabled │
└──────────┴────┴─────────┴──────┴─────┴─────────────┘
webbench -c100 -t5 http://localhost:1337/
Speed=226704 pages/min, 427094 bytes/sec.
Requests: 18892 susceed, 0 failed.

通过各种方式测试了一天,为什么开启集群模式后,并发量就是上不去呢?

9 回复

个人觉得, webbench和web服务不要跑在同一个服务器上。 你既然有两台,可以一台跑pm2集群,另外一台跑webbench。

@renaesop 早上测试了下,在其他主机进行测试,问题依然没有解决!

有人遇到过这个问题吗?

没有做过这方面研究,目前比较倾向于单核多服务器负集群模式。背多实例坑的不轻又查不到问题。

这些测试代码没有需要高CPU消耗的地方,再加多少核进去也白搭吧。

把pm2的exec mode设置为cluster_mode就哦了

回到顶部