less than 1 minute read

pm2

什么是PM2?

  • PM2(Process Manager 2)是一个功能丰富的Node.js应用程序管理器。它允许我们运行Node.js应用程序作为后台进程,并且内置负载均衡器,可以使用PM2轻松地管理在一台机器上运行的多个应用程序。

PM2的功能

PM2是一个功能丰富的Node.js应用程序管理器,用于管理和守护Node.js应用程序。以下是PM2的一些主要功能:

  • 进程管理:PM2可以轻松启动、停止、重启和删除应用程序。
  • 文件监控: PM2可以通过监控文件变化来自动重启应用。
  • 负载均衡:PM2可以自动负载均衡Node.js应用程序,提高应用程序的性能和可靠性。
  • 守护进程:PM2可以保持应用程序始终运行,如果应用程序崩溃,PM2会自动重启它。
  • 日志管理:PM2可以聚合、存储和实时显示应用程序的日志,方便开发者调试和监控。
  • 监控:PM2提供了一个内置的监控系统,可以查看应用程序的CPU、内存使用情况和其他关键指标。
  • 集群模式:PM2可以在集群模式下运行应用程序,充分利用多核CPU的性能,并且支持0-second-downtime reload。
  • 启动脚本:PM2可以生成系统启动脚本,实现应用程序的自动启动和守护。
  • 模块系统:PM2支持插件和模块,可以轻松扩展其功能。
  • 容器支持:PM2与Docker等容器技术兼容,可以在容器化环境中运行和管理应用程序。

如何使用PM2运行Node.js应用

  • 配置文件ecosystem.config.js:
    module.exports = {
            apps : [{
                        name   : "app_name",
                        error_file: "/var/apps/myapp/appname_error.log",
                        out_file: "/var/apps/myapp/appname_access.log",
                        merge_logs: true,
                        exec_mode : "cluster",
                        kill_timeout: 5000,
                        instances: "2",
                        wait_ready: true,
                        script : "/var/apps/myapp/current/server.js",
                        log_type: "json",
                        env: {
                                      NODE_ENV: "production",
                                      PORT: 3000   
                                    }
                      }]
    }
    
  • 安装pm2
    npm install pm2@latest -g&&pm2 update
    
  • 创建pm2配置1
    pm2 init simple
    
  • 启动应用
    pm2 start
    

    借助process.send(‘ready’)来保证应用完成全部启动操作再对外提供服务。

  • 重新加载应用
    pm2 reload
    

    如果应用的exec_mode设置为cluster,并且instances数量大于1,那么借助reload可以实现zero-downtime 更新服务,当然应用本身也需要能正确处理SIGINT信号。

  • 关闭应用
    pm2 stop 
    
  • 开启日志归档
    pm2 install pm2-logrotate 
    
  • 创建开机启动脚本
    pm2 startup
    

Updated: