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

nodejs守护进程 PM2

时间:2024-04-03 18:26:17浏览次数:25  
标签:PM2 pm2 nodejs -- 应用程序 js 日志 守护

nodejs守护进程 PM2

 

概述

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/sexintercourse/p/18113294

相关文章

  • PM2 常用命令备忘单
    PM2常用命令备忘单 概述以下命令,基本涵盖了PM2的所有使用场景开始#分叉模式pm2startapp.js--namemy-api#给进程命名#集群模式pm2startapp.js-i0#根据可用CPU数量启动最大进程数,并使用负载均衡pm2startapp.js-imax#与上述相同,但已弃用pm2s......
  • 使用NodeJS将数据保存成JSON文件
    使用NodeJS将数据保存成JSON文件 在平时我需要把后端一些object变量保存至本地,可以这样做:constexpress=require("express");constapp=express();constserver=require("http").createServer(app);constfs=require('fs');app.use(express.static("publ......
  • nodejs在谷歌浏览器中调试
    一.浏览器开启实验室模式在谷歌浏览器中输入网址<chrome://flags/>,进入页面后打开该功能。二.配置js文件我用的是pycharm,首先对需要调试的js文件进行配置,然后填入--inspect-brk三.调试jsDebugger要调试的js文件,然后在谷歌浏览器中新打开一个标签页,打开开发者工具,等待nod......
  • nodeJs 实现视频的转换(超详细教程)
    前段时间拿到一个视频是4k的,没法播放,于是通过node.js  和 ffmpeg实现了视频的转换。在win10系统下实现。所需工具node16.19直接安装ffmpeg-5.1.1-essentials_build解压后重名ffmpeg放到C盘然后配置下环境变量Git-2.42.0.2-64-bit直接安装安装完建一个demo......
  • nodejs websocket
    github:库地址node后端:interfacemsgType{from:string;to:string;msg:string;}exportclassServer{privatews=require("nodejs-websocket");privateconnections:{nickname:string;con:any}[]=[];constructor(){this.sta......
  • nodejs爬图片(二)
    前言    网上一张一张下载是不是很麻烦,直接批量下载,解决你的问题。高清不是梦!        具体步骤不说了,直接上代码constcheerio=require("cheerio");constaxios=require("axios");constfs=require("fs");constpath=require("path");letht......
  • nodejs做中间层_Nodejs 之 RPC 协议简介
    背景随着Nodejs的兴起,越来越多的Web服务中间层被搭建起来。如Node服务端渲染,BFF(BackendForFrontend))层,而RPC是远端过程调用,经常用于BFF层。最近,我打算写一个中间层,用Nodejs调用Go服务,除了可以简单用http调用之外,发现还有基于RPC的调用就研究了一下。RPC简......
  • NodeJS 高校学业预警系统 毕业设计-10551
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,教育行业当然也不能排除在外。高校学业预警系统是以实际运用为开发背景,运用软件工程开发方法,采用Node.JS技术构建的一个管理系统。整个开发过程首先对软件系......
  • CTF题型 nodejs(1) 命令执行绕过&典型例题
    CTF题型nodejs(1)命令执行绕过文章目录CTF题型nodejs(1)命令执行绕过一.nodejs中的命令执行二.nodejs中的命令绕过1.编码绕过2.拼接绕过3.模板字符串4.Obejct.keys5.反射6.过滤中括号的情况典型例题1.[GFCTF2021]ez_calc2.[西湖论剑2022]NodeMagicalLogin......
  • CTF题型 nodejs(2) Js沙盒vm&vm2逃逸原理总结&典型例题
    CTF题型nodejs(2)Js沙盒逃逸原理&典型例题文章目录CTF题型nodejs(2)Js沙盒逃逸原理&典型例题一.vm原理以及逃逸1.基本用法2.如何逃逸汇总1)this为对象2)this为null(Object.create(null))a.可用输出直接触发toString方法b.调用属性触发3)Object.create(null)+沙箱......