목차
pm2란 무엇입니까
pm2 기본 사용법을 살펴보겠습니다. 명령
负载均衡
配置文件
日志
总结
웹 프론트엔드 JS 튜토리얼 노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

Apr 19, 2023 pm 06:59 PM
node.js node

노드 프로세스 관리 도구-pm2를 사용하는 방법 이번 글에서는 노드 프로세스 관리 도구-pm2를 사용하는 방법에 대해 설명하겠습니다.

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

pm2란 무엇입니까

pm2는 애플리케이션을 보호하고 관리하는 데 도움이 되는 데몬 프로세스 관리 도구입니다. 일반적으로 pm2는 서비스가 온라인 상태가 될 때 관리에 사용됩니다. 실제로 pm2가 할 수 있는 일은 파일 변경 모니터링 및 자동 재시작, 여러 프로세스의 통합 관리, 로드 밸런싱 내장, 로깅 시스템 등 정말 많습니다. pm2

pm2 기본 사용법을 살펴보겠습니다. 명령

먼저 간단한 노드 서비스를 만들고 새 폴더를 만들고 npm init를 실행한 다음 pm2npm init,然后装 pm2

npm i pm2 -g
로그인 후 복사

新建 index.js 和 index2.js,写两个简单的 http 服务,然后用 pm2 进行管理。【相关教程推荐:nodejs视频教程编程教学

//index.js
let http = require("http");
let server = http.createServer();
server.on("request", function (req, res) {
  console.log("------------------enter");
  res.write("hello juejin");
  res.end();
});

server.listen(3000, function () {
  console.log(`服务器启动成功,通过http://localhost:3000/进行访问`);
});
로그인 후 복사
//index2.js
let http = require("http");
let server = http.createServer();
server.on("request", function (req, res) {
  console.log("------------------enter2");
  res.write("hello juejin2");
  res.end();
});

server.listen(3001, function () {
  console.log(`服务器启动成功,通过http://localhost:3001/进行访问`);
});
로그인 후 복사

接下来我们将使用 pm2 的第一个命令: pm2 start index.jspm2 start index2.js 分别启动这两个个程序

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

当然如果你想指定进程名字可以这样: pm2 start -n test index.js,如果你想监听文件改动可以加--watch等等

访问http://localhost:3000/

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

执行pm2 log可以看到我们打印的日志

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

pm2 的命令还有很多,下面列举几个

  • 停止 1 个/多个/所有程序 pm2 stop id/id1 id2 id3/all
  • 杀死 1 个/多个/所有程序 pm2 delete id/id1 id2 id3/all
  • 重启 1 个/多个/所有程序 pm2 restart id/id1 id2 id3/all
  • 启动并查看日志 pm2 start api.js --attach
  • 列出应用程序 pm2 list
  • 查看监控面板 pm2 monit
  • 查看程序数据 pm2 show [id]

负载均衡

我们都知道 NodeJS 是一个异步单线程语言,倘若不做任何处理直接部署到服务器上,那么它也只能使用服务器的一个线程,这样是非常浪费性能的。

使用 pm2 只需一个命令就能让我们的程序充分利用服务器的 CPU,拿 index.js 为例:pm2 start index -i max,比如我的电脑是 10 核 20 线程,它就会开 20 个线程

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

当然如果你想指定多少线程可以直接将 max 改成你想开的线程数 pm2 start index -i 3

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

配置文件

上面的例子我们都是使用命令行进行管理的,这样其实挺不方便的,好在 pm2 提供了配置文件的形式。

我们直接使用命令pm2 init simple即可生成一个简单的配置文件ecosystem.config.js,修改一下让它指向我们的两个服务

module.exports = {
  apps: [
    {
      name: "index",
      script: "./index.js",
    },
    {
      name: "index2",
      script: "./index2.js",
    },
  ],
};
로그인 후 복사

然后我们将原先的进程都 kill 掉,执行pm2 start ecosystem.config.js,同样的我们的两个服务都被启动了

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

下面列举一些配置项ecosystem.config.js

module.exports = {
  apps: [
    {
      name: "index", //name
      script: "./index.js", //相对于pm2 start 的相对路径
      cwd: "", //要启动的应用程序的目录
      instances: 2, //要启动实例的数量,就是上面提到的负载
      watch: true, //是否启动监听
      env: { NODE_ENV: "development" }, //	将出现在您的应用程序中的 env 变量
      env_xxx: {
        NODE_ENV: "xxx", //使用pm2注入xxx变量进行切换
      },
      log_date_format: "YYYY-MM-DD HH:mm Z", //日志时间格式
      error_file: "./log/index-error.log", //错误文件路径
      out_file: "./log/index-out.log", //输出日志文件路径
      max_restarts: 10, //最大重启数
      restart_delay: 4000, //重启延迟时间ms
      autorestart: true, //是否自动重启
      cron_restart: "", //定时重启 使用cron表达式
    },
    {
      name: "index2",
      script: "./index2.js",
    },
  ],
};
로그인 후 복사

日志

日志对于后端排查错误是非常重要的,pm2 自带日志功能,比如我们在上面配置文件中配置了日志相关的参数

log_date_format: "YYYY-MM-DD HH:mm Z", //日志时间格式
error_file: "./log/index-error.log", //错误文件路径
out_file: "./log/index-out.log", //输出日志文件路径
로그인 후 복사

当我们启动项目的时候,日志就会记录在 log 下

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

pm2 自带的日志功能是不支持日志分割的。随着时间的推移,日志文件会越来越大,不仅会影响性能,后期排查问题也十分麻烦,因此我们需要对日志进行分割。日志分割操作很简单,只需要安装pm2-logrotate

pm2 install pm2-logrotate
로그인 후 복사
를 설치합니다

새 index.js와 index2.js를 만들고 두 가지 간단한 http 서비스를 작성합니다. 그런 다음 pm2를 사용하여 관리합니다. [권장 관련 튜토리얼: nodejs 동영상 튜토리얼, 프로그래밍 교육

pm2 set pm2-logrotate:max_size 1K
로그인 후 복사
로그인 후 복사
pm2 restart ecosystem.config.js
로그인 후 복사
로그인 후 복사

다음으로 pm2의 첫 번째 명령인 pm2 start index를 사용합니다. jspm2 start index2.js는 각각 이 두 프로그램을 시작합니다

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

물론, 프로세스 이름을 지정하려면 다음과 같이 하면 됩니다: pm2 start -n test index.js , 파일 변경 사항을 모니터링하려면 --watch 등을 추가하면 됩니다

🎜http://localhost:3000/를 방문하세요🎜🎜< img alt="노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다." loading="lazy"/>🎜🎜<코드> 실행 pm2 로그 확인 인쇄된 로그를 확인하세요🎜🎜노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다. 🎜🎜pm2에는 많은 명령이 있으며, 다음은 몇 가지입니다. 🎜
  • 1/다중/모든 프로그램 중지pm2 stop id/id1 id2 id3/all< / li>
  • 1/다중/모든 프로그램 종료pm2 delete id/id1 id2 id3/all
  • 1/다중/모든 프로그램 다시 시작 pm2 restart id/ id1 id2 id3/all
  • 로그 시작 및 보기pm2 start api.js --attach
  • 애플리케이션 나열 pm2 list
  • 모니터링 패널 보기 pm2 monit
  • 프로그램 데이터 보기 pm2 show [id]

로드 밸런싱🎜🎜우리는 NodeJS가 비동기식 단일 스레드 언어라는 것을 모두 알고 있습니다. 아무런 처리 없이 서버에 직접 배포되면 귀하에게만 적용됩니다. 서버의 스레드를 사용할 수 있는데 이는 엄청난 성능 낭비입니다. 🎜🎜pm2를 사용하면 프로그램이 서버의 CPU를 최대한 활용하게 하려면 명령 하나만 필요합니다. 예를 들어 pm2 start index -i max입니다. 10개의 코어와 20개의 스레드, 20개의 스레드가 열립니다🎜🎜image. png🎜🎜물론, 원하는 스레드 수를 지정하려면 max를 열고 싶은 스레드 수로 직접 변경할 수 있습니다. pm2 start index -i 3</ 코드>🎜🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/b209adeeafb2038bf428c9dc446f3294-4.png" class="lazy" alt="노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다." loading="lazy"/>🎜 <h2 data-id="heading-3">구성 파일🎜🎜위의 예에서는 모두 명령줄을 사용하여 관리했는데, 이는 실제로 상당히 불편합니다. 다행히 pm2는 구성 파일 형식을 제공합니다. 🎜🎜<code>pm2 init simple 명령을 직접 사용하여 간단한 구성 파일 ecosystem.config.js를 생성하고 두 서비스를 가리키도록 수정합니다🎜rrreee🎜 그런 다음 종료합니다. 모든 원래 프로세스를 완료하고 pm2 start Ecosystem.config.js를 실행하세요. 마찬가지로 두 서비스가 시작됩니다🎜🎜노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.🎜🎜다음은 일부 구성 항목입니다ecosystem.config.js< /code>🎜rrreee<h2 data- id="heading-4">Log🎜🎜Log는 백엔드 문제 해결에 매우 중요합니다. pm2에는 자체 로그 기능이 있습니다. 예를 들어 위의 구성 파일에서 로그 관련 매개 변수를 구성했습니다. 프로젝트를 시작하면 로그가 로그에 기록됩니다 🎜🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/88f246791c471dd2858c0759129cd5c4-6.png" class="lazy" alt="image. png" loading="lazy"/>🎜🎜pm2 자체 로그 기능은 로그 분할을 지원하지 않습니다. 시간이 지남에 따라 로그 파일이 점점 더 커지게 되어 성능에 영향을 미칠 뿐만 아니라 나중에 문제를 해결하는 데에도 매우 번거롭기 때문에 로그를 분할해야 합니다. 로그 분할 작업은 매우 간단합니다. <code>pm2-logrotate 플러그인만 설치하면 됩니다. pm2 install🎜rrreee🎜 그런 다음 관련 구성을 보려면 pm2 conf를 실행하세요🎜🎜🎜 🎜🎜해당 의미를 설명해주세요🎜
  • Compress:是否通过 gzip 压缩日志

  • max_size:单个日志文件的大小

  • retain:保留的日志文件个数

  • dateFormat:日志文件名中的日期格式,默认是 YYYY-MM-DD_HH-mm-ss

  • rotateModule:是否把 pm2 本身的日志也进行分割,

  • workerInterval:检查文件时间间隔

  • rotateInterval:设置强制分割,默认值是 0 0 * * *,意思是每天晚上 0 点分割,这里使用的是 corn 表达式,不会的可以搜索一下

如果我们想要配置也很简单,比如修改 max_size

pm2 set pm2-logrotate:max_size 1K
로그인 후 복사
로그인 후 복사

然后我们简单测试一下这个工具,我们先设置每个 log 文件最大 1kb

然后重启我们的项目

pm2 restart ecosystem.config.js
로그인 후 복사
로그인 후 복사

然后就会发现我们的日志被分割了

노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.

总结

pm2对于node服务的管理是十分方便的,文中提到的只是其中一部分,如果你想使用pm2管理你的服务的话可以到官网pm2.io/ 进行学习

更多node相关知识,请访问:nodejs 教程

위 내용은 노드 프로세스 관리 도구인 pm2를 사용하는 방법에 대해 자세히 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Node V8 엔진의 메모리와 GC에 대한 자세한 그래픽 설명 Mar 29, 2023 pm 06:02 PM

이 기사는 NodeJS V8 엔진의 메모리 및 가비지 수집기(GC)에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다.

Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법 Mar 28, 2023 pm 07:28 PM

파일 업로드를 처리하는 방법은 무엇입니까? 다음 글에서는 Express를 사용하여 노드 프로젝트에서 파일 업로드를 처리하는 방법을 소개하겠습니다. 도움이 되길 바랍니다.

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Node의 프로세스 관리 도구 'pm2”에 대한 심층 분석 Apr 03, 2023 pm 06:02 PM

이 기사에서는 Node의 프로세스 관리 도구인 "pm2"를 공유하고 pm2가 필요한 이유, pm2 설치 및 사용 방법에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다!

PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? PI 노드 교육 : PI 노드 란 무엇입니까? Pi 노드를 설치하고 설정하는 방법은 무엇입니까? Mar 05, 2025 pm 05:57 PM

Pinetwork 노드에 대한 자세한 설명 및 설치 안내서이 기사에서는 Pinetwork Ecosystem을 자세히 소개합니다. Pi 노드, Pinetwork 생태계의 주요 역할을 수행하고 설치 및 구성을위한 전체 단계를 제공합니다. Pinetwork 블록 체인 테스트 네트워크가 출시 된 후, PI 노드는 다가오는 주요 네트워크 릴리스를 준비하여 테스트에 적극적으로 참여하는 많은 개척자들의 중요한 부분이되었습니다. 아직 Pinetwork를 모른다면 Picoin이 무엇인지 참조하십시오. 리스팅 가격은 얼마입니까? PI 사용, 광업 및 보안 분석. Pinetwork 란 무엇입니까? Pinetwork 프로젝트는 2019 년에 시작되었으며 독점적 인 Cryptocurrency Pi Coin을 소유하고 있습니다. 이 프로젝트는 모든 사람이 참여할 수있는 사람을 만드는 것을 목표로합니다.

Node의 이벤트 루프에 대해 이야기해 봅시다. Node의 이벤트 루프에 대해 이야기해 봅시다. Apr 11, 2023 pm 07:08 PM

이벤트 루프는 Node.js의 기본 부분이며 메인 스레드가 차단되지 않도록 하여 비동기 프로그래밍을 가능하게 합니다. 이벤트 루프를 이해하는 것은 효율적인 애플리케이션을 구축하는 데 중요합니다. 다음 기사는 Node.js의 이벤트 루프에 대한 심층적인 이해를 제공할 것입니다. 도움이 되기를 바랍니다!

노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? 노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? Feb 08, 2023 am 10:09 AM

노드가 npm 명령을 사용할 수 없는 이유는 환경 변수가 올바르게 구성되지 않았기 때문입니다. 해결 방법은 다음과 같습니다. 1. "시스템 속성"을 엽니다. 2. "환경 변수" -> "시스템 변수"를 찾은 다음 환경을 편집합니다. 3. nodejs 폴더의 위치를 ​​찾습니다. 4. "확인"을 클릭합니다.

See all articles