PM2 是一款非常实用的 Node.js 进程管理器,它可以帮助我们简化运维工作,支持自动化重启、动态扩缩容、日志管理等功能。本文将通过 PM2 的实践应用经验,总结一些官方文档之外的使用技巧,以便更好地利用 PM2 管理 Node.js 应用。
一、重启设置
1. 监听文件变化自动重启
在开发中,我们经常需要修改代码并测试,这时候需要频繁手动重启应用,非常繁琐。PM2 提供了监听文件变化自动重启的功能,可以大大提高效率。
pm2 start app.js --watch # 监听当前目录下所有文件的变化 pm2 start app.js --watch "src/**/*.js" # 只监听 src 目录中所有的 .js 文件变化
2. 设置重启延时
默认情况下,PM2 在进行重启操作时,会直接杀掉进程并启动新的进程。如果当前请求正在处理中,会被直接终止,导致请求失败。为了避免这种情况,可以设置重启延时时间,等所有请求都处理完成再进行重启操作。
pm2 start app.js --exp-backoff-restart-delay=1000 # 设置重启延时为 1 秒
二、进程管理
1. 一次性启动多个应用
在开发中,我们经常需要同时启动多个 Node.js 应用,这时候可以使用 PM2 的 ecosystem.config.js
文件来管理多个进程。
-- -------------------- ---- ------- -- ------------------- -------------- - - ----- - - ----- ------- ------- ------------ ----- ----- -- - ----- ------- ------- ------------ ----- ------ -- - -
pm2 start ecosystem.config.js # 一次性启动 app1 和 app2 两个应用
2. 一键重载进程
在应用发布过程中,通常需要先停止当前进程,然后重新启动更新后的进程。这时候可以使用 PM2 的 pm2 reload
命令,它会在不影响用户体验的情况下完成进程重载。
pm2 reload app.js
3. 动态缩容和扩容
在实际生产环境中,进程的负载可能会产生剧烈波动,需要根据负载调整进程数量。PM2 提供了动态缩容和扩容的功能,可以根据不同的负载情况,自动增加或减少进程数量。
pm2 scale app +3 # 向 app 应用增加 3 个进程 pm2 scale app 3 # 将 app 应用的进程数量设为 3
三、日志管理
1. 自定义日志文件名
默认情况下,PM2 的日志文件名是 app-out.log
和 app-error.log
。如果您需要使用自定义的日志文件名,可以通过 PM2 的 log_date_format
和 log_file_name
配置项自定义。
pm2 start app.js --log-date-format="YYYY-MM-DD HH:mm:ss" --log-file-name="app.log" # 日志文件名设置为 app.log
2. 日志分割和压缩
由于日志文件往往会过大,需要及时进行分割和压缩。PM2 提供了自动分割/压缩日志的配置项,可以避免手动清理日志文件的繁琐操作。
pm2 start app.js --log-date-format="YYYY-MM-DD HH:mm:ss" --log-file-name="app.log" --log-max-size="100M" --log-rotate-interval="1d" # 每天自动分割日志,并保留近 7 天的压缩日志文件
四、总结
本文介绍了 PM2 官方文档之外的使用技巧,包括重启设置、进程管理和日志管理。PM2 作为 Node.js 生态中的进程管理神器,具有很高的实用性和便捷性,可以帮助我们大大简化 Node.js 应用的运维工作。希望本文对大家的工作和学习有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651a969a95b1f8cacd2786e4