什么是PM2

一句话,概括:Advanced, production process manager for Node.js
说白了,进程管理,高级的,看他怎么高级了:

  • 内建负载均衡Clustering
  • 后台运行
  • 自动重启
  • 性能监控
  • 当然咯,还有日志!!!!

日志得强调一下,我在程序中用log4js,相信很多人用它记日志,部署在服务器后,666大多情况是没有问题的。记有一次程序内存暴涨挂了,有一次AMQP失去连接挂了,看log,什么鬼,没有错误信息??后经多次测试证明,高并发任务处理中程序出错,可能log4js模块的异步写日志线程还没有执行,主线程已经挂掉了。。what ...?
pm2来了,log4js没有记的pm2帮你记^_^

安装

全局安装最新稳定版:

npm install pm2@latest -g

就是这么简单,更新?pm2 update

项目结构

  • $HOME/.pm2 will contain all PM2 related files
  • $HOME/.pm2/logs will contain all applications logs,日志文件夹,你会看到app-error-0.log app-out-0.log等日志,以你起的应用名称开头,输出和报错
  • $HOME/.pm2/pids will contain all applications pids
  • $HOME/.pm2/pm2.log PM2 logs
  • $HOME/.pm2/pm2.pid PM2 pid
  • $HOME/.pm2/rpc.sock Socket file for remote commands
  • $HOME/.pm2/pub.sock Socket file for publishable events
  • $HOME/.pm2/conf.js PM2 Configuration

常用这些

pm2 start app.js --name app //Fork mode 运行
pm2 start app.js -i 0 //Cluster mode 根据有效CPU数目启动最大进程数目
pm2 start app.js -i 4 //Cluster mode 启动4个实例
pm2 list //显示进程状态
pm2 monit // Monitor所有进程
pm2 logs [--raw] //显示所有的日志
pm2 flush //清空所有日志文件
pm2 stop all //停止所有进程
pm2 stop [name|id] //停止某个进程
pm2 restart all //重启所有进程
pm2 restart [name|id] //重启某个进程
pm2 reload all //0秒停机重载进程(for NETWORKED apps)
pm2 delete [name|id] //移除某个进程
pm2 delete all //移除所有进程

还有好用的

如果你想加一些参数,比如NODE_ENV --max-old-space-size...
可以这么做 pm2 start app.js --max-old-space-size=2048
每个这么搞?好烦。。
pm2支持 Process File 一个配置文件配置你的所有服务

Generate

pm2 ecosystem //将生成一个简单配置文件 ecosystem.config.js

Config

意思一看就明白

module.exports = {/*** Application configuration section*/apps : [// First application{name      : 'app_1',script    : '/root/project_1/app.js',env: {NODE_ENV: 'development'},env_production : {NODE_ENV: 'production'}},// Second application{name      : 'app_2',script    : '/root/project_2/app.js',instances : 4,exec_mode : 'cluster',env: {NODE_ENV: 'production'},env_production : {NODE_ENV: 'production'}},// Third application{name      : 'app_3',script    : '/root/project_3/master.js',env: {NODE_ENV: 'production'},env_production : {NODE_ENV: 'production'},node_args: "--nouse-idle-notification --gc_global --max-old-space-size=2048"}]
};
//也可以用JSON

CLI

pm2 start ecosystem.config.js //启动所有的应用
pm2 start ecosystem.config.js --only app_1 //启动app_1
pm2 stop ecosystem.config.js [--only app_1] //停止
pm2 restart ecosystem.config.js [--only app_1] //重启
pm2 reload ecosystem.config.js [--only app_1] //重载
pm2 delete ecosystem.config.js [--only app_1] //移除

PM2管理node.js相关推荐

  1. Node.js微服务 2 :基于Seneca和PM2构建Node.js微服务

    2.1 选择Node.js的理由 如今,Node.js已经成为国际上许多科技公司的首选方案.特别的,对于在服务器端需要非阻塞特性(例如Web Sockets)的场景,Node.js俨然成了最好的选择. ...

  2. 使用nvm安装并管理node.js

    使用nvm安装并管理node.js tags: 网站 修改日期:2019年01月22日 版本:v1.0 作者:whl [toc] 一.安装nvm # 卸载旧版本 rm -rf "$NVM_D ...

  3. 使用pm2管理node服务

    最近在做项目的时候有个需求,需要将nodeJS写的接口部署到服务器上,并且要求服务器重启后该node进程也会自动启动,我在搜索相关资料后选择了使用pm2进程管理工具. pm2管理工具相关优势: (1) ...

  4. 使用nvm管理node.js版本以及更换npm淘宝镜像源

    目录 1,前言 2,安装nvm 3,nvm的使用 4,错误处理 5,修改npm默认镜像源 6,win10下cnpm报错 1,前言 注意:此教程仅限Windows,Mac可能不适用 在我们的日常开发中可 ...

  5. node.js PM2部署项目

    文章更新 2023-05-21 更新NSSM安装服务的方式 pm2 是什么 pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序.通常一般会在服务上线的时候使用 pm2 进行管理.本文围绕以 ...

  6. (转)在Windows平台上安装Node.js及NPM模块管理

    本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...

  7. Node.js+mongodb 学习笔记(三)swagger注释+用户管理

    Node.js+mongodb 学习笔记(三)swagger注释+用户管理 Node.js+mongodb 学习笔记(三)swagger注释+用户管理 用户注册 用户登录 修改密码 swagger注释 ...

  8. 在Ubuntu 14.04上设置生产环境可用的Node.js

    在Ubuntu 14.04上设置生产环境可用的Node.js 提供:ZStack社区 前言 Node.js是一个开源的JavaScript运行时环境,开发者可以用它方便的构建服务器端应用和网络应用.N ...

  9. js 弹出层的点击事件影响到底层的点击事件_聊一聊 Node.js 错误处理

    个人博客:https://blog.skrskrskrskr.com 错误分类 软件程序中,我们可以将错误大致分为外部错误和内部错误两大类. 外部错误是正确编写的程序在运行时产生的错误.它并不是程序本 ...

最新文章

  1. 谷歌浏览器翻译插件 Linkclump:一次性打开多个链接
  2. 操作系统 第一章【操作系统引论】【MOOC答案】
  3. Spring Boot 批量上传: The field files exceeds its maximum permitted size of 1048576 bytes.
  4. php项目部署lnmp,如何在lnmp环境里,部署多个php项目?
  5. .net 任务(Task)
  6. python层次聚类_python实现层次聚类
  7. linux dhcp服务软包,dpkg包管理器详解
  8. c语言链表递增,[C语言][PTA][2019Fall] 6-28 递增的整数序列链表的插入 (15 point(s))
  9. LeetCode-321 Create Maximum Number
  10. short s1=1;s1+=1问题
  11. Spring Boot 集成MyBatis
  12. 【超直白】leetcode 279 完全平方数
  13. MFC串口发送数据大于128数据出错的解决办法(发送0xFE接收得到0x3F等问题)
  14. win10进程太多怎么优化_教你优化Windows7后台进程,让你的电脑启动更快、运行更流畅...
  15. Java--JSON嵌套JSON中带‘\‘字符的解决方式
  16. ant design 动态给a-input设置默认值
  17. solr中文同义词检索的配置讲解
  18. android 友盟统计动态设置渠道,Android 友盟多渠道打包
  19. android 判断键盘是否弹起
  20. Markdown使用小笔记

热门文章

  1. 如何用staruml画包图_StarUML的9种图
  2. linux ubuntu下怎样将pdf格式文件转换为doc格式文件,Ubuntu环境下把word文档转成pdf,把pdf文件转成jpg...
  3. html div 可鼠标滚动,js实现鼠标拖拽div左右滑动
  4. 计算机系未来的理想工作,电智学院2019级计算机专业开展专业指导与职业规划报告会...
  5. IN-12辉光数码管:俄罗斯进口的器件
  6. 2021 CSDN年度回忆录
  7. 第十六届智能车竞赛英飞凌技术培训日程安排
  8. Python 中的3Dplot
  9. 基于ADuC845的数据采集板
  10. 电网电压波形是否失真?