零基础学会Linux性能优化:系统调优从这5步开始
为什么要做Linux性能优化?
很多站长或运维新手都会遇到服务器变慢、CPU跑满、内存不足的情况。Linux性能优化不是玄学,而是通过系统化的检查和调整,让服务器更稳定、更高效。
本文假设你用的是CentOS 7/8或Ubuntu 20.04+,并且拥有root权限。
别怕,每个命令我都会解释清楚,你直接复制粘贴就能用。
第一步:获取当前系统性能基线
优化之前,先要摸清家底。
执行以下命令记录当前状态:
# 查看CPU负载和进程
uptime
# 查看内存使用
free -h
# 查看磁盘I/O和读写速度
iostat -x 1 3
# 查看网络流量
nload
这些命令可以帮你找到瓶颈在哪。
比如 free -h 显示内存剩余不足10%,那重点就是内存优化。建议把截图或文本保存下来,这是优化前后的对比证据。
第二步:CPU和内存优化实战
CPU优化:限制特定进程的CPU使用
如果某个进程占用CPU过高,可以用 cpulimit 限制:
# 安装cpulimit(CentOS需先启用EPEL)
yum install -y epel-release && yum install -y cpulimit
# 限制进程PID为12345的CPU使用率为50%
cpulimit -p 12345 -l 50
内存优化:调整swap使用策略
修改 vm.swappiness 参数(值越小越倾向使用物理内存):
# 临时生效
echo 10 > /proc/sys/vm/swappiness
# 永久生效,编辑 /etc/sysctl.conf 添加
vm.swappiness = 10
# 然后执行 sysctl -p 使其生效
避坑提醒:swappiness 不要设置成0,否则系统在内存紧张时可能直接OOM(内存溢出)杀掉进程。
推荐10~30之间。
第三步:磁盘I/O与网络调优技巧
磁盘I/O优化:调整调度器
查看当前磁盘调度器:
cat /sys/block/sda/queue/scheduler
对于SSD推荐使用 none 或 mq-deadline,机械硬盘推荐 deadline。
临时切换:
echo none > /sys/block/sda/queue/scheduler
永久修改可在 /etc/default/grub 中追加 elevator=none,并更新grub。
网络优化:调整TCP缓冲区
编辑 /etc/sysctl.conf 添加:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
然后 sysctl -p。
这能提升高并发场景下的网络吞吐量。
高频问题:为什么修改后重启失效?
——因为你只改了sysctl.conf但没执行 sysctl -p 或者写错了路径。
第四步:使用工具持续监控
优化完成后,需要持续监控确认效果。
推荐两个轻量工具:
htop:直观显示CPU和内存占用,按F6排序nethogs:按进程显示网络流量
安装与使用:
yum install -y htop nethogs
htop
nethogs eth0
如果发现某个优化点没生效,重新检查对应配置文件或参数。
常见问题与避坑指南
Q:为什么我调整了swappiness,free -h 还是显示swap用了很多?
A:参数只影响未来swap的换入/换出行为,已使用的swap不会自动回收。可以执行 swapoff -a && swapon -a 强制清空(注意内存必须足够)。
Q:优化后系统反而变慢了?
A:可能是因为某个限制过于激进,比如同时限制CPU和内存,导致关键服务频繁被中断。建议一次只改一两个参数,观察24小时再继续。
避坑总结:
- 改配置前记得备份原文件(
cp /etc/sysctl.conf /etc/sysctl.conf.bak) - 不要在生产环境用
rm -rf或chmod 777乱改权限 - 优化后务必重启服务(如nginx、php-fpm)而不是只重启系统
搞定以上5步,你的Linux性能优化就完成了一大半。
如果遇到异常,先回看这5步中的检查命令,确认参数是否生效。
按本文流程走一遍,服务器响应速度会有明显提升。