温馨提示×

CentOS 系统中 Node.js 如何进行故障排查

小樊
85
2025-04-10 14:56:13
栏目: 编程语言

在 CentOS 系统中排查 Node.js 故障可以通过以下几个步骤进行:

1. 检查日志

  • 系统日志:使用 journalctl 命令查看系统日志,特别是与 Node.js 服务相关的日志。
    journalctl -u your-nodejs-service-name -t
    
  • 应用程序日志:如果 Node.js 应用程序生成了日志文件,可以直接查看这些文件。例如:
    cat logs/app.log
    less logs/app.log
    tail -f logs/app.log
    

2. 检查进程和服务

  • 使用 pstopsystemctl 等工具检查 Node.js 进程的状态和资源使用情况。
    ps aux | grep node
    top -p <pid>
    systemctl status your-nodejs-service
    

3. 检查网络连接

  • 使用 pingtraceroutenetstat 等工具检查网络连接和端口状态。
    ping google.com
    netstat -an | grep <port>
    

4. 检查系统资源

  • 使用 topfreedf 等工具检查 CPU、内存和磁盘空间使用情况。
    free -m
    df -h
    top
    

5. 使用调试工具

  • Node.js 内置调试器:在代码中插入 debugger; 语句,然后使用 node inspect your_script.js 命令运行脚本。
  • 第三方调试工具:如 Visual Studio Code 的内置调试器或 Chrome DevTools,这些工具提供了更强大的调试功能,如设置断点、单步执行、监视表达式等。

6. 性能监控

  • 使用内置的 process 模块获取进程信息,如 CPU 使用率和内存使用情况。
    const os = require('os');
    const cpuUsage = process.cpuUsage();
    console.log(`CPU 使用率: ${cpuUsage.user} ${cpuUsage.system}%`);
    const totalMemory = os.totalmem();
    const freeMemory = os.freemem();
    console.log(`内存使用情况: ${(totalMemory - freeMemory) / totalMemory * 100}%`);
    
  • 使用第三方库,如 express-status-monitor 提供实时的服务器性能指标和健康检查。
    const express = require('express');
    const statusMonitor = require('express-status-monitor');
    const app = express();
    app.use(statusMonitor());
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });
    

7. 内存泄漏排查

  • 使用 heapdump 模块导出内存快照,然后在 Chrome DevTools 中进行分析。
    const heapdump = require('heapdump');
    heapdump.writeSnapshot('/tmp/heapdump.heapsnapshot');
    
  • 使用监控工具如 Easy-Monitor 或 Grafana 进行内存泄漏检测和排查。

通过以上步骤,可以系统地排查 CentOS 系统中 Node.js 应用程序的故障,从日志分析、进程状态检查到性能监控和内存泄漏排查,确保应用程序的稳定运行。

0