Linux性能优化CPU内存:从零开始:Linux系统CPU
为什么要进行CPU和内存优化
先问一个问题:你的Linux服务器跑起来是不是越来越慢了?
访问量大了以后,CPU动不动就100%,内存快用满了,这时候不需要立刻换硬件,先试试Linux性能优化CPU内存的方法。
通过调整系统参数、清理不必要的进程和缓存,往往能释放20%~30%的性能空间。
准备工作:你需要什么?
- 一台Linux服务器(本文以CentOS 7/8为例,Ubuntu命令也通用)
- SSH终端工具(或者直接在服务器上操作)
- root权限或sudo权限
- 一点耐心(程序调整后需要观察几分钟)
第一步:检查当前CPU和内存状态
先看看你的CPU和内存到底有多紧张。
运行以下命令:
toptop命令会显示CPU使用率、内存使用率以及占用资源最多的进程。
按 1 可以展开每个CPU核心的情况。
按q退出。
更直观的工具是htop,需要先安装:
yum install htop -y # CentOS
apt install htop -y # Ubuntu运行htop后,你会看到彩色条状图,红色代表内核占用,绿色代表用户占用,蓝色代表低优先级。重点关注:CPU idle idle(空闲)低于20%说明需要优化;
内存使用率超过80%也要注意。
第二步:CPU优化实操
1. 找出“吃CPU”的进程
在top或htop里,按P(大写)可以按CPU使用率排序。
找到CPU占用最高的进程号(PID)。
2. 调整进程优先级
如果某个后台进程不需要那么高的优先级,使用renice降低它的优先级:
renice -n 10 -p 12345 # 将PID 12345的优先级降低(数字越大优先级越低)3. 使用cpulimit限制进程CPU使用百分比
安装:
yum install cpulimit -y # 或 apt install cpulimit限制进程myprocess的CPU使用不超过50%:
cpulimit -e myprocess -l 504. 关闭不必要的服务
查看自启动服务:
systemctl list-unit-files --type=service --state=enabled用systemctl disable 服务名关闭不需要的服务,比如蓝牙、打印等。
这样可以腾出CPU和内存。
第三步:内存优化实操
1. 清理系统缓存
Linux会占用大量内存作为文件缓存,这是正常现象。
但如果其他进程需要内存,系统会自动释放。
你也可以手动清理(建议只在测试环境):
sync && echo 3 > /proc/sys/vm/drop_cachesecho 3 会清理页缓存、dentries和inodes。
执行后看free -h,used列会明显下降。
不过重启后失效。
2. 调整swappiness参数
swappiness决定了系统使用交换空间的倾向,默认60。
数值越低,越不优先用swap,对性能越好(但需要充足物理内存)。
修改:
echo 10 > /proc/sys/vm/swappiness # 临时生效永久生效:编辑/etc/sysctl.conf,添加行:
vm.swappiness = 10然后执行sysctl -p加载。
3. 检查内存泄漏
如果某个进程长期占用内存而不释放,可以用ps结合排序找出来:
ps aux --sort=-%mem | head -10对疑似泄漏的进程,考虑重启或更新程序。
避坑说明
- 别乱调内核参数:修改
/proc/sys/vm/下的文件前先备份,特别是vm.overcommit_memory等,设置不当会导致系统崩溃。 drop_caches只推荐在测试环境:生产环境谨慎使用,突然清空缓存可能导致磁盘I/O飙升。cpulimit对多线程进程可能不准确:它只限制单线程CPU使用,对多线程进程建议使用cgroups。- 优化后别立刻下结论:观察至少10分钟,看看服务是否正常响应。
效果验证
优化后再次运行htop或top:
- CPU idle idle 增加 >= 10% 算有效果
- 内存 used 下降(特别是不再使用swap时)
- 服务响应时间缩短:可以用
time curl http://localhost/service对比前后耗时
另外用vmstat 1 5查看系统瓶颈:
vmstat 1 5如果 si(swap in)和 so(swap out)接近0,说明内存优化到位。
高频问题解答
Q:优化后服务器还是卡怎么办?
A:检查是否有大量I/O等待(top中的wa值),如果硬盘I/O太高,CPU空闲也可能是卡在了磁盘。你还需要优化磁盘读写。
Q:swappiness设为0好不好?
A:不建议完全禁用swap。设置成0只是告诉内核“不要主动使用swap”,但系统在内存极低时仍然会使用,可以防止OOM kill。生产环境推荐10~30。
Q:清理缓存后进程变慢是怎么回事?
A:因为系统之前缓存在内存中的文件数据被清空了,重新读取磁盘会暂时变慢。等缓存再次建立后恢复正常。
如果你正在处理Linux性能优化CPU内存的问题,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
(本文所有命令需要在root或sudo权限下执行,如果你对某个命令不熟悉,建议先查找资料再操作。
)