内存、CPU 与负载

先看整体,再找进程

uptime
free -h
top
ps -eo pid,ppid,user,%cpu,%mem,rss,stat,etime,cmd --sort=-%cpu | head

Load Average 不是简单的 CPU 百分比;它还可能包含等待不可中断 I/O 的任务,应结合 CPU 核数、top 中的使用率和 I/O 现象判断。

Linux 会利用空闲内存做 Page Cache,所以 used 高不一定代表内存泄漏。关注 available、Swap 活动、进程 RSS、持续趋势和 OOM 日志。

journalctl -k --grep='Out of memory\|Killed process'

Node.js 与多进程

PM2 Cluster 的每个实例都是独立进程,V8 堆、Express、数据库连接池和模块缓存都会重复占用内存。一个实例 150 MB,8 个实例就不是 150 MB。MySQL、Redis、Nginx 和系统缓存也共享整机资源。

不要看到高占用就 kill -9

先判断是短时峰值、持续泄漏、死循环还是下游阻塞;记录 PID、启动时间、命令、日志和指标。优先限流、摘流、优雅停止或通过进程管理器重启。SIGKILL 无清理机会,只作最后手段。