阿里云部署pm2集群多核不利用问题
目前是使用阿里云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消耗的地方,再加多少核进去也白搭吧。
stackoverflow: http://stackoverflow.com/a/28737438
用cluster集群
@Neil-UWA 谢谢!
把pm2的exec mode设置为cluster_mode就哦了