首页 > 系统相关 >nodejs守护进程 PM2

nodejs守护进程 PM2

时间:2023-06-03 18:57:13浏览次数:50  
标签:PM2 pm2 nodejs -- 应用程序 js 日志 守护

概述

PM2是用于Node.js应用程序的生产环境进程管理器,内置负载均衡器。它允许你将应用程序持续运行,无需停机重新加载,并简化常见的系统管理任务。

官方网站 Github

特性

  1. 进程管理:PM2 可以启动、停止和重启 Node.js 应用程序进程,确保应用程序一直处于运行状态。它还提供了容错机制,可以在进程崩溃时自动重新启动应用程序。

  2. 负载均衡:PM2 内置了负载均衡器,可以将传入的请求分发到多个 Node.js 进程中,以提高应用程序的性能和可扩展性。负载均衡可以帮助应对高流量和并发请求的情况。

  3. 日志管理:PM2 收集和管理应用程序的日志输出。它可以将日志记录到文件中,并提供了一些日志管理工具,如日志的切割和轮转,以及查看实时日志输出等功能。

  4. 监控和性能分析:PM2 可以监控应用程序的运行状态、CPU 和内存使用情况,以及请求的响应时间等指标。它还提供了性能分析工具,可以帮助你识别和解决性能瓶颈问题。

  5. 部署和自动化:PM2 可以帮助你方便地部署和更新 Node.js 应用程序。它支持自动化部署、代码的自动拉取和更新,以及与其他部署工具的集成。

开始

安装

npm install pm2 -g

启动守护进程

pm2 start app.js

CLI选项

# 指定一个应用程序名称
--name <app_name>

# 监听指定应用程序,当文件改变时重启
--watch

# 设置应用程序重新加载的内存阈值
--max-memory-restart <200MB>

# 指定日志文件
--log <log_path>

# 传递给脚本额外的参数
-- arg1 arg2 arg3

# 自动重新启动之间的延迟
--restart-delay <延迟时间(毫秒)>

# 在日志前面加上时间戳
--time

# 不自动重新启动应用程序
--no-autorestart

# 指定强制重新启动的 cron 表达式
--cron <cron_pattern>

# 附加到应用程序日志
--no-daemon

管理命令

pm2 restart app_name
pm2 reload app_name
pm2 stop app_name
pm2 delete app_name

如果你不想使用app_name管理进程,你可以通过:

  • all 作用于所有进程
  • id 作用于特定的进程 ID

列出托管应用程序

pm2 [list|ls|status]

显示日志

实时显示日志:

$ pm2 logs

挖掘旧日志:

$ pm2 logs --lines 200

pm2.io:监控和诊断 Web 界面

基于 Web 的仪表板,具有诊断系统的跨服务器:

pm2 plus

集群模式

对于 Node.js 应用程序,PM2 包括一个自动负载均衡器,它将在每个衍生进程之间共享所有 HTTP(S)/Websocket/TCP/UDP 连接。

要以集群模式启动应用程序:

$ pm2 start app.js -i max

在此处阅读有关集群模式的更多信息。

生态系统文件

您还可以创建一个称为生态系统文件的配置文件来管理多个应用程序。要生成生态系统文件:

$ pm2 ecosystem

这将生成一个 ecosystem.config.js 文件:

module.exports = {
  apps : [{
    name: "app",
    script: "./app.js",
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }, {
     name: 'worker',
     script: 'worker.js'
  }]
}

并轻松启动它:

$ pm2 start ecosystem.config.js

在此处阅读有关申请声明的更多信息。

设置启动脚本

使用您在服务器启动/重新启动时管理的进程重新启动 PM2 至关重要。要解决这个问题,只需运行此命令以生成一个活动的启动脚本:

$ pm2 startup

并冻结自动重生的进程列表:

$ pm2 save

在此处阅读有关启动脚本生成器的更多信息。

重新启动应用程序更改

使用选项非常简单--watch

$ cd /path/to/my/app
$ pm2 start env.js --watch --ignore-watch="node_modules"

这将在当前目录+所有子文件夹中的任何文件更改时监视并重新启动应用程序,并且它将忽略 node_modules 文件夹中的任何更改--ignore-watch="node_modules"

然后,您可以使用它pm2 logs来检查重新启动的应用程序日志。

更新 PM2

我们让它变得简单,版本之间没有重大变化,过程很简单:

npm install pm2@latest -g

然后更新内存中的 PM2 :

pm2 update

标签:PM2,pm2,nodejs,--,应用程序,js,日志,守护
From: https://www.cnblogs.com/mydyxy/p/17454382.html

相关文章

  • nodejs使用eggjs创建项目,接入influxdb完成单表增删改查
    转载请注明出处:1.Eggjs特性:Eggjs是Node.js服务端应用开发框架,它提供了一套约定,使开发者能够快速搭建、开发和部署应用。以下是Egg.js的一些特性和作用:框架内置了基于约定的目录结构、约定的扩展机制和一些常用的插件,可以帮助开发者快速搭建应用。Egg.js遵循MVC......
  • php写守护进程(Daemon)
     守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。 1、基本概念    进程            每个进程都有一个父进程,子进程退出,父进程能得到......
  • nodejs koa框架下载和导入excel
    ac.jsconstservice=require("../service/model.service");consturlencode=require("urlencode");consthelper=require("../../utils/helper");module.exports={/***@description:下载导入度量模板*@param{type}*@retur......
  • nodejs版playwright
        awaitthis._page.waitForLoadState('networkidle');  awaitthis._page.waitForLoadState('load')  awaitthis._page.waitForLoadState('domcontentloaded')  awaitthis._page.waitForSelector('body');await......
  • Linux 添加redis守护进程
    1、编写启动服务文件 /lib/systemd/system/redis.service[Unit]Description=Theredis-serverProcessManagerDocumentation=https://redis.io/After=network.target[Service]Type=forking#根据自己的redis路径启动和停止ExecStart=/usr/local/redis/bin/redis-server/usr/l......
  • 2023-05-30 浅试nodejs实现登录接口业务(未完,待测试)
    constexpress=require('express');constbodyParser=require('body-parser');constmysql=require('mysql');//创建MySQL连接池constpool=mysql.createPool({host:'localhost',user:'root',password......
  • linux Centos7 部署 nodejs服务
    nodejs服务要有nodejs环境。所以要先安装nodejs不会安装的可以看  Centos7安装npm学习 安装pm2cnpminstallpm2-g,查看pm2是否安装成功pm2-v,如果报错,升级node版本进入node项目目录,安装项目依赖 cnpminstall创建pm2任务 [root@localhostserver]#pm2sta......
  • Nodejs版本控制
    Nodejs版本控制NVM全称node.jsversionmanagement,专门针对node版本进行管理的工具,通过它可以安装和切换不同版本的node.js下载地址:https://github.com/coreybutler/nvm-windows下载之后安装的时候注意不能有中文名字中文路径以及空格可以显示当前的node版本nvmlist......
  • Nodejs 应用编译构建提速建议
    编译构建的整体过程拉取编译镜像拉取缓存镜像拉取项目源码挂载缓存目录执行编译命令(用户自定义)持久化缓存上传编译镜像为什么在本地构建就快,但编译机上很慢在编辑机上每次的构建环境都是全新的,完成一次构建比本地需要多一些步骤:现成的全局包缓......
  • python:Error: EPERM: operation not permitted, mkdir 'F:\Program Files\nodejs\n
     可以发现文件没有权限npmERR!Error:EPERM:operationnotpermitted,mkdir'F:\ProgramFiles\nodejs\node_global\node_modules'将nodejs的文件权限改为完全控制之后操作即可 ......