核心目标:可控拉高 CPU 利用率至目标值(如 50%),不影响业务、后台稳定运行、可精准安全启停,覆盖 Linux(含银河麒麟 V10)和 Windows 系统,全程无风险操作。
一、Linux 系统(含银河麒麟 V10,重点推荐)
提供两套安全方案,优先选择已安装的stress工具,无工具时使用独立脚本方案,全程禁止使用pkill -9 bash。
方案 1:stress工具(推荐,精准可控,停止安全)
核心优势
- 精准控制进程数,1 个进程≈1 个 CPU 核心满载,利用率可控
- 停止命令仅影响
stress进程,无系统级风险 - 已在你的服务器安装,无需额外配置
操作步骤
-
查看 CPU 核心数
nproc示例:输出
8=8 核 CPU,目标 50% 利用率→进程数 = 4。 -
后台启动(关键:脱离终端,断开 SSH 不停)
# 格式:nohup stress -c <进程数> > /dev/null 2>&1 & nohup stress -c 4 > /dev/null 2>&1 &nohup+&:进程脱离终端,后台常驻> /dev/null 2>&1:日志丢黑洞,不占磁盘空间
-
验证效果
- 进程检查:
ps aux | grep stress,能看到stress进程且TTY列显示?(已脱离终端) - 利用率检查:执行
top,看%Cpu(s)行,us+sy≈50%、id(空闲)≈50%即为达标
- 进程检查:
-
安全停止(仅关闭负载进程,无风险)
pkill -9 stress该命令仅终止
stress进程,不影响系统 / 业务进程。
方案 2:无工具安全脚本版(应急使用,无依赖,解决pkill -9 bash风险)
核心优势
- 独立脚本管理,自带 PID 记录,停止时仅杀负载进程
- 不依赖第三方工具,纯原生命令实现
- 启停分离,避免误杀系统
bash进程
步骤 1:创建启动脚本cpu50.sh
cat > /usr/local/cpu50.sh << 'EOF'
#!/bin/bash
# 安全CPU负载脚本,进程数可根据核心数调整(示例为4进程,适配8核50%负载)
PID_FILE="/tmp/cpu50.pid"
# 清空旧PID文件
> $PID_FILE
# 启动指定数量的CPU负载进程(修改{1..4}调整进程数)
for i in {1..4}
do
(while true; do :; done) &
echo $! >> $PID_FILE
done
echo "CPU负载进程已启动,PID已保存到 $PID_FILE"
echo "停止命令:bash /usr/local/stop_cpu50.sh"
EOF
- 按需调整:将
{1..4}改为{1..N},N = 核心数 × 目标利用率(如 16 核要 50%→{1..8})
步骤 2:创建安全停止脚本stop_cpu50.sh
cat > /usr/local/stop_cpu50.sh << 'EOF'
#!/bin/bash
PID_FILE="/tmp/cpu50.pid"
if [ -f $PID_FILE ]; then
echo "正在安全停止CPU负载进程..."
# 根据PID文件精准终止进程,不影响其他进程
xargs kill -9 < $PID_FILE 2>/dev/null
rm -f $PID_FILE
echo "停止完成!仅关闭负载进程,不影响系统/业务。"
else
echo "未检测到运行中的CPU负载进程"
fi
EOF
步骤 3:给脚本授权(必须执行)
chmod +x /usr/local/cpu50.sh
chmod +x /usr/local/stop_cpu50.sh
日常使用流程
-
后台启动负载
nohup /usr/local/cpu50.sh > /dev/null 2>&1 & -
验证进程运行
ps aux | grep "while true"能看到 N 个循环进程(与设置的进程数一致)即为成功
-
安全停止(唯一停止方式)
/usr/local/stop_cpu50.sh
二、Windows 系统
方案 1:PowerShell 原生脚本(无第三方工具,后台运行)
操作步骤
-
查看 CPU 核心数打开「任务管理器」→「性能」→「CPU」,查看「逻辑处理器」数量(如 8 核),目标 50% 利用率→线程数 = 4。
-
创建后台运行脚本 新建文本文件,保存为
cpu_load.ps1,内容如下(以 4 个线程为例):$cores = 4 # 修改为目标线程数(核心数×目标利用率) for ($i=0; $i -lt $cores; $i++) { Start-Job -ScriptBlock { while ($true) { $null = 1 } } } -
**后台启动(隐藏窗口)**以管理员身份打开 PowerShell,执行:
Start-Process powershell -ArgumentList "-ExecutionPolicy Bypass -File cpu_load.ps1" -WindowStyle Hidden -
验证效果打开「任务管理器」→「性能」→「CPU」,查看利用率是否达到目标值。
-
安全停止 方式 1(精准停止):在任务管理器中,找到对应
powershell.exe进程(占用 CPU 的),右键「结束任务」方式 2(批量停止):Stop-Process -Name powershell -Force
方案 2:第三方工具CPU Stress(直观易用,适合新手)
- 下载绿色版
CPU Stress工具(无需安装) - 打开工具,设置
Number of threads为「核心数 × 目标利用率」(如 8 核→4) - 点击
Start,最小化窗口(后台运行) - 验证:任务管理器查看 CPU 利用率
- 停止:点击
Stop,关闭工具即可
三、通用避坑指南(Linux/Windows 通用)
- 负载控制 :进程 / 线程数不要超过 CPU 核心数,否则会导致上下文切换,利用率反而上不去,还可能影响业务。
- 业务优先:先在业务低峰期测试 10 分钟,确认不影响业务进程,再长期运行。
- 后台运行:必须脱离终端 / 隐藏窗口,否则断开 SSH / 关闭窗口后进程会立刻终止。
- 安全启停红线 :
- Linux:禁止使用
pkill -9 bash,会误杀所有系统 / 业务bash进程,仅使用pkill -9 stress或自定义停止脚本 - Windows:停止 PowerShell 脚本时,优先结束对应进程,避免批量终止所有
powershell.exe
- Linux:禁止使用
- 效果验证 :启动后必须用
top(Linux)或任务管理器(Windows)确认利用率达标,不要启动后就不管。 - 记得停止:巡检通过后立即停止压力进程,避免长期浪费服务器资源。
四、安全操作速查清单
| 系统 | 方案 | 启动命令 | 停止命令 | 适用场景 |
|---|---|---|---|---|
| Linux | stress 工具 | nohup stress -c 4 > /dev/null 2>&1 & |
pkill -9 stress |
已安装 stress,推荐首选 |
| Linux | 安全脚本版 | nohup /usr/local/cpu50.sh > /dev/null 2>&1 & |
/usr/local/stop_cpu50.sh |
无 stress 工具,应急使用 |
| Windows | PowerShell 脚本 | Start-Process powershell -ArgumentList "-ExecutionPolicy Bypass -File cpu_load.ps1" -WindowStyle Hidden |
任务管理器结束对应进程 | 无第三方工具 |
| Windows | CPU Stress 工具 | 点击Start |
点击Stop |
新手友好,无需写脚本 |
关键提醒
- 所有操作均需在业务低峰期测试,避免影响线上业务
- 停止压力进程后,需再次确认 CPU 利用率恢复正常
- 若需长期使用,可配合定时任务(如 Linux
crontab、Windows 任务计划)实现定时启停