linux服务器负载告警需综合load average、cpu核数、进程状态、i/o等待和内存压力判断“忙”与“病”:一看load是否超阈值(>核数×1.2需关注,>×2大概率过载);二查线程级cpu/内存异常及堆栈;三验i/o饱和与内存换页;四扫inode、deleted文件及fd耗尽等隐性瓶颈。

Linux服务器负载告警不是单纯看CPU使用率高不高,而是要结合load average、CPU核心数、进程状态、I/O等待和内存压力综合判断。真正关键的是区分“忙”和“病”——系统在高效处理任务(如批量计算)是正常的“忙”,而因资源争抢、阻塞或OOM频繁触发调度才是需要干预的“病”。
一看负载数值是否真超标
用 uptime 或 top 查看三段 load average(1/5/15分钟):
- 对比 nproc 输出的逻辑CPU核数:若 1分钟值持续 > 核数 × 1.2,需关注;> 核数 × 2,大概率已过载
- 注意单位一致性:4核机器 load 3.8 是健康,load 6.5 就存在排队压力
- 不要只盯百分比:top里显示 CPU 70% 但 load 是 0.3,说明任务少且轻;反过来 load 8.2 但 us+sy 只有 40%,大概率是 I/O 等待(wa 高)或大量 D 状态进程
二查进程与线程级线索
用 htop(推荐)或 top -H 进入线程视图:
Destoon B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 系统特性1、跨平台。支持Linux/Unix/Windows服务器,支持Apache/IIS/Zeus等2、跨浏览器。基于最新Web标准构建,在
- 按 P 排序看 CPU 占比,找长期 >90% 的线程;按 M 看内存,找 RSS 持续增长的进程
- 记下可疑 PID,用 pwdx PID 查工作目录,ps -p PID -o comm= 看命令名,cat /proc/PID/cmdline | tr '\0' ' ' 看完整启动参数
- 对 Java/Python 类服务,加 -p PID 后用 jstack 或 py-spy record 抓堆栈,定位热点方法或死循环
三验I/O与内存是否拖累调度
高 load 常由磁盘或内存瓶颈引发,而非CPU本身:
- 运行 iostat -x 1 3:重点关注 %util >95%(设备饱和)、await >10ms(单次IO慢)、r/s + w/s 是否突增
- 执行 iotop -o 找出实际刷盘的进程;lsof +D /var/log 看是否有日志文件被反复重写
- 用 free -h 和 vmstat 1 5 观察:若 si/so(swap in/out)持续非零,或 buff/cache 占比极低、available 内存逼近 0,说明内存不足触发频繁换页
四扫隐性资源耗尽项
有些负载升高不体现在 top,却让新进程无法创建或请求卡住:
- 检查 inode:用 df -i,若某分区 usage >95%,即使 df -h 显示空间充足,也无法新建文件或进程
- 查已删未释放文件:运行 sudo lsof +L1,输出中带 (deleted) 的条目说明进程还在写一个已被 rm 的文件,占用磁盘却不显示在 du 中
- 确认文件描述符:cat /proc/sys/fs/file-nr 查已分配 fd 总数,再用 ls /proc/PID/fd | wc -l 看单个进程是否接近 ulimit -n 限制







