IT工具 | node.js 进程管理工具 PM2 大升级!支持 Bun.js

P(rocess)M(anager)2 是一个 node.js 下的进程管理器,内置负载均衡,支持应用自动重启,常用于生产环境运行 node.js 应用,非常好用👍

🌼概述

2025-03-15日,PM2发布最新版本v6.0.5,这是一个大版本升级(上一版本v5.4.2发布于24年7月),本次更新带来了 Bun.js 的支持🎉。

  • 支持 Bun.js 运行时
  • 默认禁用 git 解析
  • PM2 serve 响应增加 WEBP 内容类型

⬆️版本升级

此处以 windows 平台为例进行说明

bash 复制代码
# 查看当前版本
pm2 -v
# 5.3.0

# 直接通过以下命令覆盖安装
npm i -g pm2
# added 13 packages, removed 63 packages, and changed 121 packages in 1m
# 13 packages are looking for funding
#   run `npm fund` for details

升级后,我们执行 pm2 ls(显示pm2管理的进程)命令,会得到以下提示:

bash 复制代码
>>>> In-memory PM2 is out-of-date, do:
>>>> $ pm2 update
In memory PM2 version: 5.3.0
Local PM2 version: 6.0.5

我们执行pm2 update即可。

bash 复制代码
$ pm2 update
                  -------------
  ██████╗ ███╗   ███╗██████╗     ██╗    ██╗ ██████╗
  ██╔══██╗████╗ ████║╚════██╗    ██║   ██╔╝██╔═══██╗
  ██████╔╝██╔████╔██║ █████╔╝    ██║  ██╔╝ ██║   ██║
  ██╔═══╝ ██║╚██╔╝██║██╔═══╝     ██║ ██╔╝  ██║   ██║
  ██║     ██║ ╚═╝ ██║███████╗    ██║██╔╝   ╚██████╔╝
  ╚═╝     ╚═╝     ╚═╝╚══════╝    ╚═╝╚═╝     ╚═════╝
                  https://pm2.io/
     Harden your Node.js Production Environment

      - Real-time Monitoring Web Interface
      - Pro Active Alerting System
      - Production Profiling for Memory and CPU
      - PM2 Runtime High Availability Fallback

             Start using it by typing:

                    $ pm2 plus
                  -------------

[PM2][WARN] No process found
[PM2] [v] All Applications Stopped
[PM2] [v] PM2 Daemon Stopped
[PM2] Spawning PM2 daemon with pm2_home=C:\Users\admin\.pm2
[PM2] Restoring processes located in C:\Users\admin\.pm2\dump.pm2
>>>>>>>>>> PM2 updated

🛠️小试牛刀

安装 Bun.js

如果您已经安装,请跳过😄

bash 复制代码
# windows 下安装 bun.js
powershell -c "irm bun.sh/install.ps1|iex"

# 升级
bun upgrade

# 卸载
powershell -c ~\.bun\uninstall.ps1

示例代码

我们让 deepseek 写一段简单的 WEB 服务

js 复制代码
import http from 'http';
import url from 'url';

// 记录程序启动时间
const startTime = Date.now();

// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
    const parsedUrl = url.parse(req.url, true);

    // 处理 /status 路由
    if (parsedUrl.pathname === '/status') {
        // 计算程序已经运行的时间(秒)
        const uptime = Math.floor((Date.now() - startTime) / 1000);

        // 返回 JSON 响应
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.end(JSON.stringify({ uptime }));
    } else {
        // 处理其他路由
        res.writeHead(404, { 'Content-Type': 'text/plain' });
        res.end('Not Found');
    }
});

// 监听端口
const PORT = 3000;
server.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

运行进程

bash 复制代码
# 使用 node.js 运行
pm2 start web-node.mjs --interpreter node
# 使用 bun.js 运行
pm2 start web-bun.mjs --interpreter bun

运行4h后的状态:

运行7h后的状态:

Bun.js 跑的应用占用的内存越来越低?😂

相关推荐
qq_1777673722 分钟前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
2603_9494621028 分钟前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
wuhen_n34 分钟前
JavaScript内存管理与执行上下文
前端·javascript
Hi_kenyon1 小时前
理解vue中的ref
前端·javascript·vue.js
jin1233222 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos
2501_920931702 小时前
React Native鸿蒙跨平台医疗健康类的血压记录,包括收缩压、舒张压、心率、日期、时间、备注和状态
javascript·react native·react.js·ecmascript·harmonyos
橙露3 小时前
React Hooks 深度解析:从基础使用到自定义 Hooks 的封装技巧
javascript·react.js·ecmascript
2501_920931703 小时前
React Native鸿蒙跨平台使用useState管理健康记录和过滤状态,支持多种健康数据类型(血压、体重等)并实现按类型过滤功能
javascript·react native·react.js·ecmascript·harmonyos
Ulyanov3 小时前
从静态到沉浸:打造惊艳的Web技术发展历程3D时间轴
前端·javascript·html5·gui开发
VT.馒头4 小时前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript