Linux性能优化概述
Linux系统性能优化的核心目标是让有限的硬件资源发挥最大效用,减少资源浪费和性能瓶颈。优化过程需要结合系统实际运行场景,比如是作为Web服务器、数据库服务器还是桌面系统,不同场景的优化侧重点存在差异。优化前建议先通过工具监控系统当前状态,明确瓶颈所在再针对性调整,避免盲目修改配置导致系统异常。

CPU性能优化方法
调整进程调度策略
Linux默认使用CFS完全公平调度器,对于实时性要求高的进程可以调整调度策略和优先级。使用chrt命令可以修改进程的调度参数,比如将某个进程的调度策略设置为实时轮转调度:
# 查看当前进程调度策略 chrt -p 1234 # 将PID为1234的进程设置为RR调度策略,优先级为50 chrt -r -p 50 1234
内核参数调优
通过调整内核参数可以减少CPU上下文切换和中断开销,编辑/etc/sysctl.conf添加以下配置:
# 减少TIME_WAIT状态的连接占用资源 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 # 调整内核调度相关参数 kernel.sched_min_granularity_ns = 10000000 kernel.sched_wakeup_granularity_ns = 15000000
执行sysctl -p让配置生效。
内存性能优化方法
调整内存缓存策略
Linux会利用空闲内存作为文件缓存提升IO性能,可通过修改vm.swappiness参数控制交换分区的使用倾向,值越低代表越倾向于使用物理内存:
# 临时设置swappiness为10,优先使用物理内存 sysctl vm.swappiness=10 # 永久生效,写入配置文件 echo "vm.swappiness=10" >> /etc/sysctl.conf
清理无用内存占用
定期清理系统缓存和不需要的进程内存,可使用以下命令释放页缓存、目录项和inode缓存:
# 清理页缓存、目录项、inode缓存 sync && echo 3 > /proc/sys/vm/drop_caches
注意该操作仅临时生效,重启后会恢复默认配置。
磁盘IO性能优化方法
选择合适的IO调度器
Linux支持多种IO调度器,不同场景适配不同的调度器:
- deadline:适合数据库、虚拟机等对IO延迟敏感的场景
- cfq:适合桌面系统,公平分配IO带宽
- noop:适合SSD硬盘,减少调度开销
查看和修改磁盘调度器的命令如下:
# 查看sda磁盘的当前调度器 cat /sys/block/sda/queue/scheduler # 临时将sda的调度器修改为deadline echo deadline > /sys/block/sda/queue/scheduler
文件系统优化
挂载文件系统时添加合适的参数可以提升性能,比如对ext4文件系统可以添加noatime参数避免每次访问文件都更新访问时间:
# 临时挂载添加noatime参数 mount -o remount,noatime /data # 永久生效,编辑/etc/fstab /dev/sda1 /data ext4 defaults,noatime 0 0
网络性能优化方法
调整网络缓冲区大小
增大网络收发缓冲区可以提升大流量场景下的网络性能,修改/etc/sysctl.conf添加以下配置:
# 调整TCP接收缓冲区大小 net.ipv4.tcp_rmem = 4096 87380 16777216 # 调整TCP发送缓冲区大小 net.ipv4.tcp_wmem = 4096 65536 16777216 # 调整最大套接字缓冲区大小 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216
减少网络连接开销
对于高并发网络服务,可以调整连接相关的内核参数减少资源占用:
# 增加系统最大文件描述符数量 fs.file-max = 6553560 # 允许端口快速复用 net.ipv4.tcp_tw_reuse = 1 # 开启SYN洪水攻击防护 net.ipv4.tcp_syncookies = 1
性能监控与验证
优化完成后需要通过工具验证效果,常用的性能监控工具包括:
- top/htop:查看CPU、内存整体使用情况
- iostat:查看磁盘IO性能
- iftop:查看网络流量情况
- vmstat:查看系统整体资源使用统计
比如使用iostat查看磁盘IO优化后的效果:
# 每2秒输出一次磁盘IO统计信息 iostat -x 2
通过对比优化前后的监控数据,可以直观判断调优是否达到预期效果。