请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

pm2 起不同端口的node 服务 存在问题

在解决公司测试环境部署的问题,不同的测试分支,需要不同的端口号,如何让pm2按照变量的形式 启动不同端口的 node 服务呢?
目前我采用的方式是用shell脚本启动服务:
其中$server 为启动服务的名称:
主要的相关脚本为:

hasStart=`ps aux|grep node|grep $port`
if [ "$hasStart" != "" ]; then
  pm2 reload $server
else
   pm2 start npm --name $server -- run start $port
fi

发现有问题

  • cpu占用率太高,几个服务起起来,机器快卡死了

请问有什么好的解决方法?

正在回答 回答被采纳积分+3

1回答

Scott 2018-10-16 09:15:12

我会选择更简单粗暴一些的做法,端口号跟着测试分支走,写到每个测试分支的配置文件里,每次从本地 deploy 的时候,都去读取该分支配置好的端口号,把服务开起来,部署到不同的服务器目录里。

cpu 占用高要看下你是不是开 cluster 模式的,因为是测试环境,可以考虑用单核来跑,禁用多核模式看看,另外我直觉上可能不是部署的问题,是不是本身这个 Node 服务代码问题,占用就高。


你可以 pm2 list 看看开起来的每个服务,cpu 和内存占用各多少,跟只开启一个有区别没

1 回复 有任何疑惑可以回复我~
  • 提问者 爱睡觉的小猫咪 #1
    非常感谢老师的认真解答,最后改成了这种方式start服务:
    pm2 start server.js -n $server -- -a $port
    cpu的占用就降下来了,还不太清楚为什么,正在研究原理
    回复 有任何疑惑可以回复我~ 2018-10-17 10:05:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信