介绍
node是项目运行的基本环境
pm2是node项目管理工具
Node.js的cluster模块
幸运的是,Node.js给我们提供了cluster模块,它可以生成多个工作线程来共享同一个TCP连接。它是如何运作的呢?首先,Cluster会创建一个master,然后根据你指定的数量复制出多个server app(也被称之为工作线程)。它通过IPC通道与工作线程之间进行通信,并使用内置的负载均衡来更好地处理线程之间的压力,该负载均衡使用了Round-robin算法(也被称之为循环算法)。当使用Round-robin调度策略时,master accepts()所有传入的连接请求,然后将相应的TCP请求处理发送给选中的工作线程(该方式仍然通过IPC来进行通信)。
用PM2的方式
PM2内置的cluster功能,内部包含了所有上述的处理逻辑,因此你不必对代码做任何修改。Cluster模块的功能非常强大,使用PM2会使它变得更加容易。
node
下载node 安装,node源码包,无需make install,解压即用
下载
wget https://oss.npmmirror.com/dist/node/v16.13.2/node-v16.13.2-linux-x64.tar.xz
解压
tar -xvf node-v16.13.2-linux-x64.tar.xz
重命名
mv node-v16.13.3-linux-x64.tar.x
配置环境
在/etc/profile设置环境变量
#...其他配置
export NODE_HOME=/opt/node-16 export NODE_PATH=$NODE_HOME/lib/node_modules PATH=$PATH:/opt/node-16/bin #新增配置 指到node下面的bin目录即可 PATH变量原本已经存在,为了不影响其他程序,所以为PATH增加一个路径 $PATH:[新增路径] export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL #如果没有export PATH 那么需要手动抛出 export #...其他配置
pm2
安装pm2
npm -g i pm2 //安装node之后既可以使用npm
建立软连接
ln -s /opt/node-16/bin/pm2 /usr/local/bin/pm2
常用命令
启动:pm2 start demo.js //demo.js是你要启动的app_name|app_id文件 停止:pm2 stop app_name|app_id 删除:pm2 delete app_name|app_id 重启:pm2 restart app_name|app_id 停止所有:pm2 stop all 查看所有的进程:pm2 list 查看所有的进程状态:pm2 status 查看某一个进程的信息:pm2 describe app_name|app_id
参数说明 --watch:监听应用目录源码的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件 -i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目,可以弥补node.js缺陷 --ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts" -n --name:应用的名称,查看应用信息的时候可以用到 -o --output <path>:标准输出日志文件的路径,有默认路径 -e --error <path>:错误输出日志文件的路径,有默认路径 --interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python...) 如完整参数命令: pm2 start demo.js --watch -i 2 //开启2个进程 pm2 start app.js -i max //根据机器CPU核数,开启对应数目的进程