Linux系统CPU100%的处理步骤和方法

 更新时间:2025年11月20日 09:03:07   作者:网硕互联的小客服  
当 Linux 系统的 CPU 使用率达到 100% 时,系统可能会变得卡顿,响应速度减慢,甚至无法正常使用,这种情况通常由高负载的进程、资源不足或潜在的系统问题引起,以下是处理 CPU 100% 的具体步骤和方法,需要的朋友可以参考下

1. 确认问题:检查 CPU 使用情况

1.1 使用top或htop查看实时 CPU 使用情况

执行以下命令查看哪个进程占用了最多的 CPU:

top 

或安装并使用 htop(更直观):

htop 
  • 重点观察以下内容:
    • CPU 使用率:查看是否接近或达到 100%。
    • 进程信息:找出占用 CPU 最高的进程(PID、进程名等)。
    • 负载均值(load average)
      • load average 的三个值分别代表最近 1 分钟、5 分钟和 15 分钟的平均负载。
      • 如果第一个值显著高于系统 CPU 核心数(如 8 核 CPU 的负载均值超过 8),说明系统超负载。

1.2 使用ps定位高 CPU 占用的进程

按 CPU 使用率列出进程:

ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head 
  • 输出说明
    • PID:进程 ID。
    • PPID:父进程 ID。
    • CMD:进程名称或启动命令。
    • %CPU:进程占用的 CPU 百分比。

1.3 使用iostat检查 I/O 是否影响 CPU

安装 sysstat 工具(如未安装):

sudo apt install sysstat     # Debian/Ubuntu
sudo yum install sysstat     # CentOS/RHEL

查看 CPU 和 I/O 状态:

iostat -c -x 1 
  • 关注以下内容:
    • %iowait:表示 CPU 等待 I/O 操作的时间。如果该值较高,可能是磁盘 I/O 瓶颈导致 CPU 闲置。

2. 解决问题:降低 CPU 使用率

2.1 杀死高 CPU 占用的进程

如果确认某个进程异常且不影响业务,可以直接终止:

sudo kill -9 <PID> 

如果进程无法被杀死,可能需要重启服务或检查相关配置。

2.2 优化高负载进程

  • 分析进程来源
    • 查看进程所属的用户和启动命令,确认其是否为必要服务。
  • 优化进程配置
    • 例如,对于 Web 服务器(如 Nginx、Apache):
      • 限制最大并发连接数。
      • 减少子进程数量。
      • 优化请求处理逻辑。
    • 对于数据库(如 MySQL、PostgreSQL):
      • 调整缓存大小。
      • 限制最大连接数。

2.3 降低进程优先级

如果无法杀死高负载进程,可以降低其优先级:

sudo renice 10 <PID> 
  • renice 参数说明
    • 值越大,优先级越低(范围 -20 到 19)。

2.4 检查是否存在僵尸进程

使用以下命令查看僵尸进程:

ps aux | grep 'Z' 
  • 如果发现僵尸进程,尝试重启其父进程或直接手动结束。

2.5 检查是否为恶意程序或挖矿软件

  • 如果高 CPU 占用来源不明,可能是恶意程序(如病毒、挖矿软件):

检查系统中是否有异常用户:

cat /etc/passwd 

检查是否有可疑的进程:

ps aux | grep -E 'minerd|cryptominer|xmrig' 

如果发现异常进程,立即终止并清理:

sudo kill -9 <PID> 

建议

更新系统补丁,修复安全漏洞。

检查 SSH 登录记录:

last 
  • 安装防病毒或安全检测工具(如 chkrootkitrkhunter)扫描系统。

2.6 检查内核或系统问题

查看系统日志
检查 /var/log/ 下的日志文件,寻找可能导致 CPU 占用的系统问题:

tail -f /var/log/syslog      # Debian/Ubuntu
tail -f /var/log/messages    # CentOS/RHEL

检查内核更新
确保系统内核和软件包是最新的,使用以下命令更新:

sudo apt update && sudo apt upgrade -y      # Debian/Ubuntu
sudo yum update -y                          # CentOS/RHEL

3. 预防 CPU 100% 的问题

3.1 限制单个进程的资源使用

使用 ulimit 为用户或进程设置资源限制:

ulimit -u 200 # 限制最大进程数为 200 

使用 cgroups 配置资源分配(如 CPU、内存限制):

sudo cgcreate -g cpu:/mygroup
sudo cgset -r cpu.shares=512 mygroup
sudo cgexec -g cpu:/mygroup <command>

3.2 定期监控系统性能

  • 安装性能监控工具:

使用 sar 查看历史 CPU 使用情况:

sar -u 1 5 
  • 使用 monitoring tools(如 ZabbixPrometheus)设置告警,提前发现高 CPU 使用。

3.3 优化系统配置

  • 调整 I/O 调度算法

将磁盘调度算法改为性能更高的 deadlinenoop

echo deadline > /sys/block/sda/queue/scheduler 
  • 启用 SWAP 内存(防止内存不足导致 CPU 负载过高):
sudo fallocate -l 1G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

3.4 定期清理无用进程

停止和禁用无用的后台进程和服务:

sudo systemctl disable <service_name>
sudo systemctl stop <service_name>

总结

当 Linux 系统 CPU 使用率达到 100% 时,应按以下步骤处理:

  1. 确认问题来源:使用 tophtopps 等工具找出高 CPU 占用的进程。
  2. 快速解决:杀死进程或降低优先级,优化配置或资源分配。
  3. 深入分析:检查是否存在系统配置问题、恶意程序或硬件瓶颈。
  4. 长期预防:优化系统配置,定期监控性能,限制资源使用。

通过上述方法,不仅能快速解决 CPU 100% 的问题,还能有效预防类似情况再次发生。

以上就是Linux系统CPU100%的处理步骤和方法的详细内容,更多关于Linux系统CPU100%的资料请关注脚本之家其它相关文章!

相关文章

  • Linux下SSH免密码登录配置详解

    Linux下SSH免密码登录配置详解

    这篇文章主要介绍了Linux下SSH免密码登录配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Linux下查看nginx apache mysql php的编译参数

    Linux下查看nginx apache mysql php的编译参数

    由于工作的需要,有时候需要在一台不是你参与编译的环境调试环境,这就需要知道nginx,apache,mysql,php的编译参数,以下小方法能快速让你了解默认的服务器里的编译参数
    2014-03-03
  • 浅谈Linux 网络 I/O 模型简介(图文)

    浅谈Linux 网络 I/O 模型简介(图文)

    这篇文章主要介绍了浅谈Linux 网络 I/O 模型简介(图文),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • linux中日志缺失原因排查与修复的完整指南

    linux中日志缺失原因排查与修复的完整指南

    当 rsyslog 使用 imuxsock 模块时,如果 长时间没有日志 输出,可能原因有多种,本文将详细解释 imuxsock 的原理,可能原因和排查步骤,希望对大家有所帮助
    2025-09-09
  • Apache 配置多端口 多虚拟主机 局域网访问示例

    Apache 配置多端口 多虚拟主机 局域网访问示例

    这篇文章主要介绍了Apache如何配置多端口 多虚拟主机 局域网访问,需要的朋友可以参考下
    2014-05-05
  • Nginx出现500 Internal Server Error 错误的解决方案

    Nginx出现500 Internal Server Error 错误的解决方案

    这篇文章主要介绍了Nginx出现500 Internal Server Error 错误的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Ubuntu 20.04 apt 更换国内源的实现方法

    Ubuntu 20.04 apt 更换国内源的实现方法

    这篇文章主要介绍了Ubuntu 20.04 apt 更换国内源的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Ubuntu下安装rsh实现无密码访问详解

    Ubuntu下安装rsh实现无密码访问详解

    这篇文章主要为大家详细介绍了Ubuntu下安装rsh实现无密码访问的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Ubuntu Server 18.04.5 LTS服务器版安装配置图解教程

    Ubuntu Server 18.04.5 LTS服务器版安装配置图解教程

    Ubuntu分为桌面版(desktop)和服务器版(Server),下面为大家介绍服务器版本Ubuntu Server 18.04.5 LTS的详细安装过程,需要的朋友可以参考下
    2021-01-01
  • Linux服务器SSH客户端连接目标服务器失败的解决方法

    Linux服务器SSH客户端连接目标服务器失败的解决方法

    Linux服务器SSH客户端连接目标服务器失败怎么办?在出现问题时我们先用排除法查找原因,以下是根据几种情况列出的解决方法,希望可以帮助到你,需要的朋友可以参考下
    2025-10-10

最新评论