服务器运行中突然遇到CPU飙升到100%的情况,会直接导致部署在上面的网站、应用响应缓慢甚至无法访问,使用宝塔面板的用户可以通过htop工具快速定位占用资源过高的异常进程,获取对应的PID进行后续处理。

一、htop工具的安装准备
宝塔面板默认可能没有预装htop工具,需要先完成安装才能进行后续操作,安装步骤根据服务器系统有所不同。
1.1 CentOS系统安装htop
CentOS系统可以直接通过yum包管理器安装,执行以下命令即可:
# 更新yum源 yum update -y # 安装htop yum install htop -y
1.2 Ubuntu/Debian系统安装htop
Ubuntu或Debian系统使用apt包管理器安装,命令如下:
# 更新apt源 apt update -y # 安装htop apt install htop -y
二、启动htop查看CPU占用情况
安装完成后直接在宝塔面板的终端或者服务器SSH连接中执行htop命令,即可进入htop的交互界面。
htop界面的顶部会显示CPU、内存、交换分区的实时使用情况,其中CPU占用会以不同颜色区分用户态、内核态、空闲等不同状态。下方的列表就是当前服务器运行的所有进程,默认会按照CPU占用从高到低排序。
三、定位异常进程并获取PID
在htop的进程列表中,CPU占用列会实时显示每个进程的CPU使用百分比,占用100%或者接近100%的进程就是导致CPU飙升的异常进程。
3.1 识别异常进程
进程列表中每一行的信息含义如下:
- PID:进程的唯一标识号,也就是我们需要获取的关键信息
- USER:进程的启动用户
- CPU%:进程当前占用的CPU百分比
- MEM%:进程占用的内存百分比
- COMMAND:进程的启动命令和参数,通过这个可以判断进程属于哪个应用
如果看到某个进程的CPU%持续保持在90%以上,且COMMAND显示的是未知程序或者本不应该高占用的程序,就可以判定为异常进程。
3.2 获取异常进程PID
异常进程所在行的第一列就是对应的PID,直接记录该数字即可。如果需要进一步确认进程详情,可以选中该进程后按F5键查看进程树,确认该进程的父进程和关联服务。
3.3 常见异常进程场景
常见的导致CPU飙升的异常进程包括:挖矿木马进程、死循环的PHP/Python脚本、异常的连接数过高的数据库进程等。比如挖矿进程的COMMAND通常包含随机字符串,或者指向非标准的安装目录。
四、根据PID处理异常进程
获取到异常进程的PID后,可以先尝试查看进程详情确认是否为误判,再进行处理。
4.1 查看进程详细信息
执行以下命令可以查看指定PID的进程完整信息:
# 替换1234为实际的PID ps -aux | grep 1234
4.2 终止异常进程
确认是异常进程后,可以先尝试正常终止进程:
# 替换1234为实际的PID kill 1234
如果正常终止无效,可以使用强制终止命令:
# 替换1234为实际的PID kill -9 1234
4.3 后续排查建议
终止异常进程后,建议进一步检查进程的来源,比如查看进程的启动脚本、定时任务等,避免进程再次自动启动。如果是网站相关的脚本异常,可以检查对应的网站日志,修复代码中的问题。
五、注意事项
使用htop时需要注意,有些系统服务的正常进程也可能短时间占用较高CPU,比如备份任务、日志切割任务等,需要结合COMMAND和进程的启动时间判断是否为异常进程,避免误杀正常的系统服务。
如果多次出现CPU飙升的情况,建议定期查看服务器的定时任务,检查是否存在恶意添加的定时任务,同时加强服务器的安全配置,避免被恶意入侵。