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):
- 调整缓存大小。
- 限制最大连接数。
- 例如,对于 web 服务器(如 nginx、apache):
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
- 安装防病毒或安全检测工具(如
chkrootkit、rkhunter)扫描系统。
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(如zabbix、prometheus)设置告警,提前发现高 cpu 使用。
3.3 优化系统配置
- 调整 i/o 调度算法:
将磁盘调度算法改为性能更高的 deadline 或 noop:
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% 时,应按以下步骤处理:
- 确认问题来源:使用
top、htop或ps等工具找出高 cpu 占用的进程。 - 快速解决:杀死进程或降低优先级,优化配置或资源分配。
- 深入分析:检查是否存在系统配置问题、恶意程序或硬件瓶颈。
- 长期预防:优化系统配置,定期监控性能,限制资源使用。
通过上述方法,不仅能快速解决 cpu 100% 的问题,还能有效预防类似情况再次发生。
以上就是linux系统cpu100%的处理步骤和方法的详细内容,更多关于linux系统cpu100%的资料请关注代码网其它相关文章!
发表评论