CentOS 7 服务器CPU突然飙升至100%?精准定位问题。
一. CPU 飙高的常见原因
CPU 高使用率通常可以归结为以下几类原因:
- 用户空间进程:某个或某些应用程序(如 Java、PHP、Nginx、MySQL 等)存在 bug、配置问题或正在进行大量计算,导致疯狂消耗
- CPU。 内核空间进程:操作系统内核在处理某些任务时消耗大量 CPU,例如频繁的中断、进程调度或网络包处理。 系统负载高:不仅是
- CPU,可能由于 I/O(磁盘/网络)等待、内存不足导致频繁交换(swap),使得系统负载(Load Average)升高,间接反映出
- CPU 繁忙。 僵尸进程:大量僵尸进程虽然不直接消耗 CPU,但可能表明父进程有问题,有时会伴随其他问题导致高负载。
- 外部攻击:例如服务器被矿机病毒入侵,恶意程序会占用大量 CPU 进行挖矿运算。 硬件问题:虽然较少见,但硬件故障(如 CPU 本身、主板)也可能导致异常。
二、排查步骤和诊断命令
当发现 CPU 飙高时,请按照以下步骤快速定位问题。
第 1 步:快速定位是哪个进程占用 CPU使用 top 命令是首选。
启动终端,直接输入:
top -c
查看关键信息:
第一行(负载): load average: 0.05, 0.10, 0.15 显示系统 1分钟、5分钟、15分钟的平均负载。如果值长期高于 CPU 核心数,说明系统负载过高。
第三行(CPU 使用率):
- %us:用户空间进程占用 CPU 百分比。如果这个值很高,通常是应用程序的问题。
- %sy:内核空间进程