临时拉高 CPU 利用率(防缩容)操作全总结(linux和windows系统)

核心目标:可控拉高 CPU 利用率至目标值(如 50%),不影响业务、后台稳定运行、可精准安全启停,覆盖 Linux(含银河麒麟 V10)和 Windows 系统,全程无风险操作。


一、Linux 系统(含银河麒麟 V10,重点推荐)

提供两套安全方案,优先选择已安装的stress工具,无工具时使用独立脚本方案,全程禁止使用pkill -9 bash

方案 1:stress工具(推荐,精准可控,停止安全)

核心优势
  • 精准控制进程数,1 个进程≈1 个 CPU 核心满载,利用率可控
  • 停止命令仅影响stress进程,无系统级风险
  • 已在你的服务器安装,无需额外配置
操作步骤
  1. 查看 CPU 核心数

    复制代码
    nproc

    示例:输出8=8 核 CPU,目标 50% 利用率→进程数 = 4。

  2. 后台启动(关键:脱离终端,断开 SSH 不停)

    复制代码
    # 格式:nohup stress -c <进程数> > /dev/null 2>&1 &
    nohup stress -c 4 > /dev/null 2>&1 &
    • nohup+&:进程脱离终端,后台常驻
    • > /dev/null 2>&1:日志丢黑洞,不占磁盘空间
  3. 验证效果

    • 进程检查:ps aux | grep stress,能看到stress进程且TTY列显示?(已脱离终端)
    • 利用率检查:执行top,看%Cpu(s)行,us+sy≈50%id(空闲)≈50%即为达标
  4. 安全停止(仅关闭负载进程,无风险)

    复制代码
    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
日常使用流程
  1. 后台启动负载

    复制代码
    nohup /usr/local/cpu50.sh > /dev/null 2>&1 &
  2. 验证进程运行

    复制代码
    ps aux | grep "while true"

    能看到 N 个循环进程(与设置的进程数一致)即为成功

  3. 安全停止(唯一停止方式)

    复制代码
    /usr/local/stop_cpu50.sh

二、Windows 系统

方案 1:PowerShell 原生脚本(无第三方工具,后台运行)

操作步骤
  1. 查看 CPU 核心数打开「任务管理器」→「性能」→「CPU」,查看「逻辑处理器」数量(如 8 核),目标 50% 利用率→线程数 = 4。

  2. 创建后台运行脚本 新建文本文件,保存为cpu_load.ps1,内容如下(以 4 个线程为例):

    复制代码
    $cores = 4  # 修改为目标线程数(核心数×目标利用率)
    for ($i=0; $i -lt $cores; $i++) {
        Start-Job -ScriptBlock { while ($true) { $null = 1 } }
    }
  3. **后台启动(隐藏窗口)**以管理员身份打开 PowerShell,执行:

    复制代码
    Start-Process powershell -ArgumentList "-ExecutionPolicy Bypass -File cpu_load.ps1" -WindowStyle Hidden
  4. 验证效果打开「任务管理器」→「性能」→「CPU」,查看利用率是否达到目标值。

  5. 安全停止 方式 1(精准停止):在任务管理器中,找到对应powershell.exe进程(占用 CPU 的),右键「结束任务」方式 2(批量停止):

    复制代码
    Stop-Process -Name powershell -Force

方案 2:第三方工具CPU Stress(直观易用,适合新手)

  1. 下载绿色版CPU Stress工具(无需安装)
  2. 打开工具,设置Number of threads为「核心数 × 目标利用率」(如 8 核→4)
  3. 点击Start,最小化窗口(后台运行)
  4. 验证:任务管理器查看 CPU 利用率
  5. 停止:点击Stop,关闭工具即可

三、通用避坑指南(Linux/Windows 通用)

  1. 负载控制 :进程 / 线程数不要超过 CPU 核心数,否则会导致上下文切换,利用率反而上不去,还可能影响业务。
  2. 业务优先:先在业务低峰期测试 10 分钟,确认不影响业务进程,再长期运行。
  3. 后台运行:必须脱离终端 / 隐藏窗口,否则断开 SSH / 关闭窗口后进程会立刻终止。
  4. 安全启停红线
    • Linux:禁止使用pkill -9 bash ,会误杀所有系统 / 业务bash进程,仅使用pkill -9 stress或自定义停止脚本
    • Windows:停止 PowerShell 脚本时,优先结束对应进程,避免批量终止所有powershell.exe
  5. 效果验证 :启动后必须用top(Linux)或任务管理器(Windows)确认利用率达标,不要启动后就不管。
  6. 记得停止:巡检通过后立即停止压力进程,避免长期浪费服务器资源。

四、安全操作速查清单

系统 方案 启动命令 停止命令 适用场景
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 任务计划)实现定时启停
相关推荐
Gofarlic_OMS1 小时前
UG/NX许可证管理高频技术问题解答汇编
java·大数据·运维·服务器·汇编·人工智能
小松加哲1 小时前
服务器LVM磁盘内部空闲空间无损扩容+挂载原理+MySQL Binlog自动清理完整实操
运维·mysql·服务器扩容
咸鱼梦想家π1 小时前
Linux开发工具(中)
linux·运维·服务器
网络安全许木1 小时前
自学渗透测试第29天(Linux SUID/SGID基础实验)
linux·运维·服务器·web安全·渗透测试
AI玫瑰助手1 小时前
Python基础:数据类型的转换(int/str/list等互转)
windows·python·list
JiaWen技术圈1 小时前
conntrack-tools 用法
linux·运维·服务器·安全·运维开发
IT界的老黄牛1 小时前
MySQL 磁盘告警 1.2TB:从衣柜原理到 gh-ost 卧底,一次释放 540GB 的实战复盘
运维·数据库·mysql
Java陈序员1 小时前
牛马效率可视化!一款键鼠统计菜单栏应用!
windows·macos
ZenosDoron1 小时前
Linux/Unix 系统中用于创建链接的命令ln
linux·运维·unix