Manage Your Nodejs Application With 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