VPS CPU占用过高排查与优化


CPU长期满载会导致VPS响应缓慢、SSH卡顿、网站加载超时。搬瓦工KiwiVM面板如果检测到CPU持续超限,甚至可能暂停VPS。本文介绍如何排查CPU高占用原因并优化。

一、查看CPU使用概况

# 实时查看CPU使用率和进程排名
top

# 更友好的交互界面(需安装)
apt install htop -y
htop

# 查看CPU核心数
nproc
# 查看CPU信息
lscpu

在top中,按"P"键按CPU使用率排序,快速找到占用最高的进程。关注%CPU列,如果单个进程超过90%,就是问题所在。

二、常见高CPU进程分析

2.1 可疑挖矿进程

如果看到不认识的进程名占用大量CPU,可能是被入侵安装了挖矿程序:

# 查看可疑进程详情
ls -la /proc/PID/exe       # 查看进程可执行文件位置
cat /proc/PID/cmdline      # 查看进程启动命令

# 常见挖矿进程名
# kdevtmpfsi, kinsing, xmrig, cpuminer, minergate

# 杀死可疑进程
kill -9 PID

# 检查crontab是否有恶意计划任务
crontab -l
cat /etc/crontab
ls /etc/cron.d/

如果确认被入侵,建议在KiwiVM面板重装系统,并更改SSH端口和使用密钥认证。

2.2 MySQL/MariaDB高CPU

# 查看MySQL正在执行的查询
mysqladmin processlist -u root -p

# 查看慢查询
mysql -u root -p -e "SHOW VARIABLES LIKE 'slow_query_log';"

# 优化措施
# 1. 开启慢查询日志
# 2. 优化数据库索引
# 3. 调整innodb_buffer_pool_size
# 4. 安装查询缓存

2.3 PHP-FPM高CPU

# 查看PHP-FPM进程状态
systemctl status php8.2-fpm

# 查看PHP-FPM配置
cat /etc/php/8.2/fpm/pool.d/www.conf

# 优化措施:限制worker进程数
# pm = dynamic
# pm.max_children = 5       # 1GB内存建议5个
# pm.start_servers = 2
# pm.min_spare_servers = 1
# pm.max_spare_servers = 3

2.4 Nginx高CPU(通常是被攻击)

# 查看当前连接数
ss -s

# 查看连接最多的IP
ss -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10

# 如果某个IP连接数异常多,用iptables封锁
iptables -A INPUT -s 恶意IP -j DROP

三、CPU使用率限制

3.1 使用cpulimit限制进程CPU

apt install cpulimit -y

# 限制某进程最多使用50% CPU
cpulimit -p PID -l 50

# 后台运行限制
cpulimit -p PID -l 50 -b

3.2 使用nice调整进程优先级

# 降低进程优先级(值越大优先级越低)
renice 19 -p PID

# 以低优先级启动程序
nice -n 19 ./your-program

四、长期优化建议

五、监控脚本

设置简单的CPU告警脚本:

#!/bin/bash
# /root/cpu-monitor.sh
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1)
if [ "$CPU_USAGE" -gt 80 ]; then
    echo "CPU使用率: ${CPU_USAGE}%" | mail -s "VPS CPU告警" your@email.com
fi

# 添加到crontab每5分钟检查
# */5 * * * * /root/cpu-monitor.sh
Tip: 如果CPU确实不够用,考虑升级到更高配置的方案。查看搬瓦工全部在售方案
关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工 BandwagonHost 的优惠信息、使用教程和方案对比,方便中文用户选购和使用。

新手必读
搬瓦工优惠码

当前最大折扣优惠码:

NODESEEK2026(优惠 6.77%)

在购买方案时填入优惠码即可自动抵扣。详见 优惠码使用教程