Linux系统性能优化需要结合硬件资源、业务负载特征针对性调整,核心目标是最大化资源利用率,减少不必要的资源消耗,提升系统响应速度和稳定性。

CPU性能优化
CPU是系统运算核心,优化重点在于合理分配CPU资源,减少无效调度开销。
调整进程优先级
可以通过nice和renice命令调整进程的优先级,优先级范围从-20到19,数值越小优先级越高,默认进程优先级为0。
# 以高优先级启动进程,nice值为-10 nice -n -10 ./your_process # 调整已运行进程的优先级,进程PID为1234,nice值设为5 renice -n 5 -p 1234
优化CPU调度策略
Linux支持多种CPU调度策略,对于实时性要求高的进程可以切换为实时调度策略,普通进程使用CFS完全公平调度器即可。
# 查看当前进程调度策略,PID为1234 chrt -p 1234 # 将进程设置为SCHED_RR实时调度策略,优先级为10 chrt -r -p 10 1234
内存性能优化
内存优化的核心是减少内存浪费,避免内存溢出,合理利用缓存机制提升访问效率。
调整交换分区策略
swappiness参数控制内核使用交换分区的倾向,取值范围0-100,数值越高越倾向于使用交换分区,默认值为60,对于内存充足的服务器可以适当调低。
# 查看当前swappiness值 cat /proc/sys/vm/swappiness # 临时设置为10,减少交换分区使用 sysctl vm.swappiness=10 # 永久生效,写入配置文件 echo "vm.swappiness=10" >> /etc/sysctl.conf sysctl -p
清理无用缓存
Linux会自动使用空闲内存作为文件缓存,必要时可以手动清理部分缓存释放内存,但需要注意清理缓存可能导致后续文件访问变慢。
# 清理页缓存、目录项缓存、inode缓存 sync && echo 3 > /proc/sys/vm/drop_caches
磁盘IO性能优化
磁盘IO通常是系统性能瓶颈之一,优化方向包括调整IO调度算法、减少随机IO、优化文件系统参数。
选择合适的IO调度器
常见的IO调度器有noop、deadline、cfq,SSD硬盘建议使用noop或deadline,机械硬盘建议使用deadline。
# 查看当前磁盘sda的IO调度器 cat /sys/block/sda/queue/scheduler # 临时将sda的调度器设置为deadline echo deadline > /sys/block/sda/queue/scheduler # 永久生效,在/etc/default/grub的GRUB_CMDLINE_LINUX中添加elevator=deadline,然后更新grub # 对于grub2系统执行 grub2-mkconfig -o /boot/grub2/grub.cfg
调整文件系统挂载参数
挂载文件系统时添加noatime参数,可以避免每次访问文件时更新访问时间,减少磁盘写入操作。
# 临时重新挂载根目录,添加noatime参数 mount -o remount,noatime / # 永久生效,修改/etc/fstab文件,在对应挂载项添加noatime # 例如原配置为 /dev/sda1 / ext4 defaults 0 1 # 修改为 /dev/sda1 / ext4 defaults,noatime 0 1
网络性能优化
网络优化重点在于提升网络吞吐量,降低延迟,减少丢包。
调整内核网络参数
可以通过sysctl调整网络相关内核参数,优化TCP连接处理、缓冲区大小等。
# 开启TCP连接复用,加快TIME_WAIT状态连接回收 sysctl net.ipv4.tcp_tw_reuse=1 sysctl net.ipv4.tcp_tw_recycle=1 # 调整TCP发送和接收缓冲区大小 sysctl net.ipv4.tcp_mem="196608 262144 393216" sysctl net.ipv4.tcp_rmem="4096 87380 4194304" sysctl net.ipv4.tcp_wmem="4096 16384 4194304" # 永久生效将上述参数写入/etc/sysctl.conf
性能监控工具使用
优化前需要先通过监控工具定位瓶颈,常用的监控工具有top、htop、vmstat、iostat、sar等。
top:实时查看进程CPU、内存占用情况vmstat:查看系统整体CPU、内存、IO、进程状态iostat:查看磁盘IO使用率和吞吐量sar:收集、报告系统活动统计信息,支持历史数据查看
# 每2秒输出一次vmstat信息,共输出5次 vmstat 2 5 # 查看磁盘sda的IO统计,每2秒输出一次 iostat -x sda 2
优化注意事项
所有优化操作建议先在测试环境验证,避免直接在生产环境修改导致业务异常。每次只调整一个参数,观察效果后再进行下一项调整,便于定位参数带来的影响。同时需要结合业务实际负载调整,没有通用的万能优化方案,适配业务场景的优化才是最有效的。