什么是 PM2
PM2 是一个进程管理工具,可以帮助你管理你的 Node.js 进程。它可以轻松地管理你的进程、监控进程的状态,支持进程守护、负载均衡和热重启等功能,可以大大提高 Node.js 的生产力和可靠性。
PM2 的远程调试功能
PM2 支持远程调试功能,可以在生产环境中对应用进行调试。如果你的应用在生产环境崩溃或者出现异常,这时候远程调试就可以帮助我们定位问题。
如何使用 PM2 进行远程调试
在生产环境中使用 PM2 进行远程调试,主要分为以下几个步骤:
- 在启动应用时添加
--inspect
或者--inspect-brk
参数,启用 V8 调试器。
$ pm2 start app.js --name=my-app -- --inspect #启用调试器
- 在本地电脑上设置远程调试,将调试请求转发到生产服务器。
如果你使用的是 VSCode,可以在“调试”面板中添加一个配置,如下所示:
// javascriptcn.com 代码示例 { "type": "node", "request": "attach", "name": "Remote Debug", // 远程调试的名字 "address": "localhost", // 修改为你的域名或者 IP 地址 "port": 9229, "localRoot": "${workspaceFolder}/server", // 本地路径需要修改 "remoteRoot": "/home/user/path/to/server", // 服务器应用所在的路径需要修改 "protocol": "inspector", "sourceMaps": true }
- 启动应用并等待调试客户端连接。
我们可以在命令行中使用 pm2 log 命令来查看应用运行的情况,当应用启动后,你将会看到 V8 调试器的 URL:
// javascriptcn.com 代码示例 $ pm2 log my-app [0] 2021-05-12 16:12:20: Starting execution sequence in -i mode [0] 2021-05-12 16:12:20: App name:my-app id:0 [0] 2021-05-12 16:12:20: App version:0.0.0 [0] 2021-05-12 16:12:20: Process current directory:/path/to/my-app [0] 2021-05-12 16:12:20: Process command: node app.js --inspect [0] 2021-05-12 16:12:20: Process actual command: node app.js --inspect [0] 2021-05-12 16:12:20: App restart index:0 [0] Debugger listening on ws://127.0.0.1:9229/cb5d713e-c654-4ff5-a3e1-09fd5e384f5c
- 启动 VSCode 的远程调试客户端,连接生产服务器,并开始调试。在 VSCode 中按下 F5 启动调试。
示例代码
// javascriptcn.com 代码示例 // app.js const http = require("http"); const hostname = "127.0.0.1"; const port = 3000; const server = http.createServer((req, res) => { console.log(req.url); res.statusCode = 200; res.setHeader("Content-Type", "text/plain"); res.end("Hello World\n"); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
总结
通过以上步骤,我们可以使用 PM2 在生产环境中实现远程调试功能,通过调试,可以更加高效地诊断和解决问题。此外,PM2 还有许多其他功能,如负载均衡、自动重启、进程监控等,值得进一步了解和使用。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65351eb87d4982a6ebb2d7be