Node.js 在 CentOS 上如何进行故障排查
导读:Node.js 在 CentOS 上的故障排查步骤 一 快速定位与日志收集 查看应用输出与日志:实时跟踪日志,优先使用应用日志文件与标准输出重定向;若通过 systemd 托管,使用 journalctl 查看服务日志。示例:tail -...
Node.js 在 CentOS 上的故障排查步骤
一 快速定位与日志收集
- 查看应用输出与日志:实时跟踪日志,优先使用应用日志文件与标准输出重定向;若通过 systemd 托管,使用 journalctl 查看服务日志。示例:
tail -f logs/app.log、journalctl -u your-nodejs-service -f。 - 检查运行环境:确认 Node.js 版本 与依赖一致(
node -v、npm -v、npm install),并核对必要的 环境变量 是否设置。 - 网络连通性:确认端口监听与连通,排查 防火墙/安全组 策略是否阻断访问。
- 最小化复现:在本地或测试环境用相同代码与数据复现,便于快速定位。
二 常见错误与修复对照表
| 症状/错误码 | 典型原因 | 快速修复 |
|---|---|---|
| EACCES(权限被拒绝) | 绑定低位端口(如 80/443)或目录无读写权限 | 改用 > 1024 端口或以具备权限的用户运行;必要时调整目录权限(谨慎) |
| EADDRINUSE(地址已被占用) | 端口被其他进程占用 | 更换端口或结束占用进程:`ss -ltnp |
| ECONNREFUSED(连接被拒绝) | 目标服务未启动、配置错误或防火墙阻断 | 启动目标服务、核对地址与端口、放通防火墙/安全组 |
| Error: listen EACCES | 同上,常见于尝试绑定 80/443 | 使用非特权端口或配置反向代理(如 Nginx) |
| Module not found | 依赖未安装或 NODE_PATH 异常 | 执行 npm install,核对本地/全局模块路径 |
| SyntaxError: Unexpected identifier | Node.js 版本过低 不支持新语法 | 使用 nvm 升级到合适版本 |
| command not found: node/npm | 未安装或 PATH 未包含可执行文件路径 | 安装 Node.js 或修正 PATH:export PATH=/path/to/node/bin:$PATH |
| ENOSPC(inotify 实例上限) | 文件监听过多触发内核上限 | 提升上限:echo "fs.inotify.max_user_watches=524288" >
>
/etc/sysctl.conf &
&
sysctl -p |
| lib64/libm.so.6: version `glibc_2.27’ not found | glibc 版本过低 | 升级系统或选择兼容的 Node.js 版本(优先方案) |
| ERR_TIMEOUT / ECONNRESET | 网络抖动、下游服务慢或异常、资源不足 | 优化网络与重试策略、检查下游健康、扩容 CPU/内存 |
三 运行环境与依赖检查
- 版本与依赖:核对 Node.js/npm 与应用兼容;执行
npm ci(或npm install)确保依赖一致;必要时使用 nvm 管理多版本。 - 权限与路径:确保运行用户对代码目录、日志目录具备读写权限;避免以 root 直接运行业务进程,建议使用专用用户并通过 systemd 或 PM2 管理。
- 端口与防火墙:确认监听地址与端口正确,放通 firewalld/安全组 规则;避免端口冲突。
- 环境变量:核对 NODE_ENV、数据库连接串、密钥等是否齐全且生效。
四 性能与资源瓶颈定位
- 系统层监控:使用 top/htop、nmon/atop、glances 观察 CPU、内存、I/O;安装 sysstat 后用 sar 查看历史与实时指标(如
sar -u 1、sar -r 1)。 - 进程与网络:用 pm2 monit 或
ps aux | grep node定位高占用进程;用 nethogs/iftop 查看进程/网卡带宽。 - 日志分析:在 journalctl 或应用日志中检索 error/timeout/ECONNRESET 等关键字,结合时间戳与请求链路定位瓶颈。
- 可视化与告警:搭建 Prometheus + Grafana 采集 Node/系统指标并配置阈值告警;或使用 ELK/Splunk 集中化日志检索与可视化。
五 调试与事后复盘
- 调试手段:使用 node inspect 或 VS Code 远程调试设置断点;对异常分支补充日志与 try-catch/Promise.catch()/EventEmitter error 处理。
- 动态追踪:必要时用 strace/perf/systemtap/eBPF 跟踪系统调用与热点函数,定位难以复现的问题。
- 运行方式建议:生产环境优先使用 PM2 或 systemd 托管,开启 自动重启 与 日志轮转,便于故障自愈与取证。
- 变更留痕:记录 Node/npm 版本、依赖锁文件、系统/内核参数 与变更单,便于回溯与复盘。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js 在 CentOS 上如何进行故障排查
本文地址: https://pptw.com/jishu/767645.html
