插件窝 干货文章 Linux 性能全方位调优经验总结

Linux 性能全方位调优经验总结

性能 bash 优化 调整 930    来源:    2025-04-13

Linux 性能全方位调优经验总结

系统层面调优

1. 内核参数优化

# /etc/sysctl.conf 关键参数
vm.swappiness = 10               # 减少swap使用倾向
vm.dirty_ratio = 10              # 系统脏页比例阈值
vm.dirty_background_ratio = 5    # 后台刷脏页比例
kernel.sched_migration_cost_ns = 5000000  # 减少进程迁移
net.core.somaxconn = 4096        # 增大连接队列
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_fin_timeout = 30    # 减少FIN_WAIT时间

2. 文件系统优化

  • 使用XFS/ext4文件系统,mount时添加选项: bash noatime,nodiratime,data=writeback,barrier=0
  • 调整IO调度器:

    # SSD使用noop或deadline
    echo noop > /sys/block/sda/queue/scheduler
    
    # 传统硬盘使用deadline
    echo deadline > /sys/block/sda/queue/scheduler
    

3. 内存管理

# 透明大页(THP)优化
echo never > /sys/kernel/mm/transparent_hugepage/enabled

# 调整内存分配策略
echo 1 > /proc/sys/vm/overcommit_memory

CPU性能调优

1. CPU频率调节

# 查看当前调节器
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# 设置为性能模式
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

2. 中断均衡

# 安装irqbalance
apt-get install irqbalance -y
systemctl enable irqbalance
systemctl start irqbalance

# 手动设置中断CPU亲和性
echo 2 > /proc/irq/123/smp_affinity

网络性能调优

1. 网卡多队列

# 启用RSS(接收端缩放)
ethtool -L eth0 combined 8

# 调整队列大小
ethtool -G eth0 rx 4096 tx 4096

# 启用GRO/GSO
ethtool -K eth0 gro on gso on

2. TCP协议栈优化

# 增大TCP窗口大小
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# 启用TCP快速打开
net.ipv4.tcp_fastopen = 3

# 调整TIME_WAIT回收
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

存储I/O优化

1. 磁盘调度

# 查看当前调度器
cat /sys/block/sdX/queue/scheduler

# 设置合适的调度器
echo deadline > /sys/block/sdX/queue/scheduler

# 调整队列深度
echo 256 > /sys/block/sdX/queue/nr_requests

2. LVM优化

# 调整I/O调度策略
lvchange --cachemode writethrough vg_name/lv_name

# 条带化设置
lvcreate -i 4 -I 64 -L 100G -n lv_name vg_name

监控与诊断工具

1. 常用性能工具

工具 用途
top/htop 实时系统监控
vmstat 系统整体状态(CPU/内存/IO)
iostat 磁盘I/O统计
sar 历史性能数据收集
perf CPU性能分析
strace 系统调用跟踪
tcpdump 网络包分析
bpftrace 高级内核追踪

2. 性能瓶颈诊断流程

  1. 识别瓶颈类型:CPU、内存、I/O还是网络
  2. 定位热点进程:使用top/htop
  3. 分析系统调用:strace -p PID -T -tt
  4. 检查锁竞争:perf lock
  5. 分析调用栈:perf record -g -p PID
  6. 内存分析:valgrind --tool=memcheck

应用层优化

1. 进程优先级调整

# 设置进程优先级
renice -n -5 -p 1234

# 设置CPU亲和性
taskset -cp 0,1 1234

2. 内存分配策略

# 使用大页内存
echo 2048 > /proc/sys/vm/nr_hugepages

# 应用中使用mlock锁定内存
mlockall(MCL_CURRENT | MCL_FUTURE);

安全与性能平衡

# 关闭不必要的安全特性(测试环境)
echo 0 > /proc/sys/kernel/randomize_va_space

# SELinux性能优化
setsebool -P httpd_can_network_connect 1

自动化调优工具

  1. tuned:自动应用性能配置

    yum install tuned
    tuned-adm profile throughput-performance
    
  2. sysbench:基准测试工具

    sysbench cpu --threads=8 run
    
  3. fio:存储性能测试

    fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based
    

调优注意事项

  1. 基准测试:调优前后必须进行基准测试对比
  2. 逐步调整:每次只修改一个参数并观察效果
  3. 文档记录:记录所有变更以便回滚
  4. 监控回退:设置监控以检测调优后的异常
  5. 考虑工作负载:不同应用场景需要不同优化策略

通过以上全方位的Linux性能调优方法,可以显著提升系统性能,但需要根据实际应用场景和工作负载特点进行针对性调整。