Linux系统性能调优技巧


Linux 系统性能调优需要结合硬件资源、业务场景和系统瓶颈进行针对性优化。以下是系统化的调优思路和常用技巧,涵盖 CPU、内存、磁盘、网络、内核参数 等核心方向:


一、性能分析工具速查

工具 用途 示例命令
top/htop 实时监控进程 CPU、内存占用 htop -d 10
vmstat 查看内存、进程、CPU 上下文切换 vmstat 1 5
iostat 监控磁盘 I/O 和吞吐量 iostat -x 1
sar 历史性能数据收集(需安装 sysstat sar -u 1 3
pidstat 进程级资源监控 pidstat -d -p 1
perf CPU 性能剖析(火焰图生成) perf record -g -p
iftop 实时网络流量监控 iftop -i eth0
dstat 综合资源监控(CPU/磁盘/网络) dstat -tcdngy

二、通用调优方向与技巧

1. CPU 优化
  • 场景:CPU 使用率高、负载飙升、上下文切换频繁
  • 调优方法
    • 优先级调整
      nice -n -20 /path/to/command  # 提高进程优先级(-20 最高)
      
    • 绑定 CPU 核心(减少上下文切换):
      taskset -c 0,1 /path/to/command  # 绑定到 CPU 0 和 1
      
    • 中断均衡(多队列网卡):
      # 查看中断分布
      cat /proc/interrupts | grep eth0
      # 手动分配中断到不同 CPU
      echo 2 > /proc/irq/128/smp_affinity
      
    • 关闭无用服务
      systemctl stop postfix   # 示例:关闭邮件服务
      systemctl disable postfix
      
2. 内存优化
  • 场景:内存不足、频繁交换(swap)、OOM 触发
  • 调优方法
    • 调整 Swappiness(减少交换):
      sysctl vm.swappiness=10          # 临时生效
      echo "vm.swappiness=10" >> /etc/sysctl.conf  # 永久生效
      
    • 透明大页(THP)优化
      echo never > /sys/kernel/mm/transparent_hugepage/enabled
      
    • 限制进程内存(防止 OOM):
      # 使用 cgroups(示例:限制进程组内存为 2GB)
      cgcreate -g memory:/my_group
      echo 2G > /sys/fs/cgroup/memory/my_group/memory.limit_in_bytes
      
3. 磁盘 I/O 优化
  • 场景:磁盘延迟高、IOPS 饱和、RAID 性能不足
  • 调优方法
    • I/O 调度器选择(SSD 推荐 nonekyber):
      echo kyber > /sys/block/sda/queue/scheduler
      
    • 文件系统优化(挂载参数):
      # ext4 示例:关闭访问时间记录,提升写性能
      mount -o noatime,nodiratime,data=writeback /dev/sda1 /data
      
    • LVM 缓存(加速慢速磁盘):
      # 使用 SSD 作为 HDD 的缓存层
      lvcreate --type cache-pool -L 100G -n cache_pool vg_ssd /dev/ssd1
      lvconvert --type cache --cachepool vg_ssd/cache_pool vg_hdd/lv_data
      
4. 网络优化
  • 场景:网络吞吐低、丢包、TCP 连接数不足
  • 调优方法
    • 内核参数调整/etc/sysctl.conf):
      # 增大 TCP 缓冲区
      net.core.rmem_max=16777216
      net.core.wmem_max=16777216
      # 加快 TIME_WAIT 回收
      net.ipv4.tcp_tw_reuse=1
      net.ipv4.tcp_fin_timeout=15
      # 扩大端口范围
      net.ipv4.ip_local_port_range=1024 65535
      
    • 网卡多队列(RSS 优化):
      ethtool -L eth0 combined 8   # 启用 8 个队列
      
    • TCP 拥塞控制算法(高带宽场景):
      sysctl net.ipv4.tcp_congestion_control=bbr
      

三、高级调优场景

1. 数据库服务器优化(如 MySQL)
  • InnoDB 配置
    innodb_flush_log_at_trx_commit=2   # 平衡持久性与性能
    innodb_buffer_pool_size=物理内存的 70%
    innodb_io_capacity=2000           # 适配 SSD 性能
    
  • 文件系统挂载
    mount -o nobarrier,noatime /dev/sdb1 /var/lib/mysql
    
2. 容器化环境优化(Docker/K8s)
  • CPU 限制策略
    docker run --cpus=2 --cpu-shares=512 nginx  # 限制容器使用 2 核
    
  • 内存限制
    docker run --memory=4g --memory-swap=4g nginx  # 禁用 swap
    
3. 内核参数深度调优
  • 调整文件句柄数
    sysctl fs.file-max=1000000
    ulimit -n 100000        # 修改用户级限制
    
  • 调整 PID 数量
    sysctl kernel.pid_max=65535
    

四、调优原则

  1. 监控先行:使用 Prometheus + Grafana 建立基线指标。
  2. 逐步调整:每次只修改一个参数并观察效果。
  3. 备份配置:关键文件(如 sysctl.conf)修改前做好备份。
  4. 硬件匹配:优先解决硬件瓶颈(如更换 NVMe SSD)。

五、调优效果验证

  • 磁盘 I/O
    fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based
    
  • 网络吞吐
    iperf3 -c <server_ip> -t 30 -P 8
    

通过系统化的分析、分阶段调优和持续监控,可显著提升 Linux 系统的性能和稳定性。

你可能感兴趣的:(devops,linux,运维,服务器)