温馨提示×

CentOS怎样优化Linux系统性能

小樊
37
2025-12-29 13:46:56
栏目: 智能运维

CentOS 性能优化实操清单

一 基线评估与监控

  • 建立可复现的基线:记录关键指标(CPU利用率、负载、内存与 swap、磁盘 IOPS/吞吐/延迟、网络吞吐与丢包、TCP 重传与连接数)。
  • 常用工具与用途:
    • 资源与负载:top/htop、vmstat、sar、uptime
    • 磁盘 I/O:iostat -x 1、iotop
    • 网络:sar -n DEV/EDEV 1、ss -s、ethtool -S
  • 优化方法论:每次只变更一个参数,变更前后对比基线;变更前备份配置;在测试环境验证后再上线生产。

二 CPU 与内存优化

  • CPU 调频与调度
    • 将 CPU 调频策略设为性能模式,避免频繁升降频带来的抖动:
      • 安装工具:yum install -y cpupowerutils
      • 查看与设置:
        • cpupower -c all frequency-info
        • cpupower -c all frequency-set -g performance
        • 验证:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  • 超线程 HT
    • 检查是否开启:grep -i ht /proc/cpuinfodmidecode -t processor | grep HTT
    • 影响因负载而异:计算密集型未必受益;部分存储/吞吐型负载可能受益。若需关闭,通常在 BIOS 关闭 HT,或在内核启动参数添加 noht(需重启)。
  • NUMA 策略
    • 检查:numactl --hardwaregrep -i numa /var/log/dmesg
    • 建议:数据库、消息队列、分布式存储等对延迟敏感且内存带宽吃紧的场景,优先在 BIOS 关闭 NUMA;若必须开启,使用 numactl --interleave=all 或将进程绑定到对应 NUMA 节点(如 OSD/进程绑定示例),以降低跨 NUMA 访问带来的延迟波动。
  • 内存关键参数
    • Transparent HugePages(THP)
      • 建议多数数据库/存储/低延迟场景设为 never,避免合并/分裂带来的 CPU 抖动与延迟尖峰:
        • 查看:cat /sys/kernel/mm/transparent_hugepage/enabledcat /sys/kernel/mm/transparent_hugepage/defrag
        • 临时关闭:
          • echo never > /sys/kernel/mm/transparent_hugepage/enabled
          • echo never > /sys/kernel/mm/transparent_hugepage/defrag
        • 永久关闭:在 /etc/rc.d/rc.local 中加入上述两条并 chmod +x /etc/rc.d/rc.local,重启后验证。
    • KSM(内核同页合并)
      • KVM 大量 Windows 客户机可能有益;对 RHEL/CentOS 上的 Ceph 等常见为负面影响,建议关闭:
        • systemctl stop ksm.service ksmtuned.service && systemctl disable ksm.service ksmtuned.service
    • Swappiness
      • 控制换页倾向,范围 0–100。内存充足且追求低延迟时建议 10;若明确希望尽量不使用 swap 可设为 0(注意:即使为 0,cgroup 子层级可能仍继承旧值,需逐层检查与设置)。
      • 查看:sysctl -a | grep swappiness
      • 临时与永久:
        • sysctl -w vm.swappiness=10
        • 写入 /etc/sysctl.confecho “vm.swappiness = 10” >> /etc/sysctl.conf
    • min_free_kbytes
      • 过低易回收困难导致卡死,过高会人为制造内存紧张。可按内存规模预留:
        • 64GB → 1GB(1048576)128GB → 2GB(2097152)256GB → 3GB(3145728)
        • 示例:sysctl -w vm.min_free_kbytes=1048576
    • 脏页刷写
      • 平滑写 I/O:后台在脏页达 5% 时开始异步刷写,前台在 80% 前不会强制同步写,兼顾吞吐与卡顿:
        • vm.dirty_background_ratio = 5
        • vm.dirty_ratio = 80
        • 可按业务抖动容忍度微调(如 10/20 等)。

三 磁盘与文件系统优化

  • I/O 调度器
    • 机械盘优先 deadline,SSD/NVMe 优先 none/noopmq-deadline(视内核与驱动而定)。
    • 查看与临时设置:
      • 查看:cat /sys/block/sdX/queue/scheduler
      • 设置:echo deadline > /sys/block/sdX/queue/scheduler
    • 永久生效:在 /etc/default/grubGRUB_CMDLINE_LINUX 增加 elevator=deadline(或 none/noop),执行 grub2-mkconfig -o /boot/grub2/grub.cfg 后重启。
  • 文件系统挂载选项
    • 减少元数据写入:使用 noatime(必要时 nodiratime
    • 示例:/dev/sda1 / ext4 defaults,noatime,nodiratime 0 0
  • RAID 与缓存
    • 写回缓存策略与阵列级别(如 RAID10/RAID5)对吞吐与可靠性影响显著,结合业务 IOPS/冗余/容量 综合选择,并确保阵列电池/超级电容保护写回安全。

四 网络优化

  • 巨型帧 Jumbo Frames
    • 端到端一致(服务器网卡、交换机、对端)才能生效,常见 MTU=9000
    • 临时与永久:
      • 临时:ip link set eth0 mtu 9000
      • 永久:在网卡配置 /etc/sysconfig/network-scripts/ifcfg-eth0 增加 MTU=9000 并重启网络服务。
  • 网卡队列与多队列
    • 提升高并发收发包能力,增大 Rx/Tx ring
      • 查看:ethtool -g enp131s0f1
      • 设置:ethtool -G enp131s0f1 rx 4096 tx 4096
  • TCP 与连接参数
    • 提升并发与缩短 TIME_WAIT 回收时间(注意不同内核/场景差异,先在测试环境验证):
      • 示例(按需调整):
        • net.core.somaxconn = 65535
        • net.ipv4.tcp_max_syn_backlog = 65535
        • net.ipv4.ip_local_port_range = 1024 65535
        • net.ipv4.tcp_tw_reuse = 1
        • net.ipv4.tcp_fin_timeout = 30
      • 使配置生效:sysctl -p

五 服务、安全与变更管控

  • 精简与自启
    • 关闭不必要的服务与开机自启,减少资源占用与攻击面:
      • 列出与禁用示例:systemctl list-unit-files --type=service;对不需要的服务执行 systemctl disable --now
  • 安全与性能的平衡
    • 不建议直接关闭 SELinuxfirewalld;如为性能压测可临时关闭并在验证后恢复,生产环境应通过策略与最小权限来兼顾安全与性能。
  • SSH 连接加速(对运维体验影响明显)
    • 编辑 /etc/ssh/sshd_config
      • UseDNS no
      • GSSAPIAuthentication no
    • 重启:systemctl restart sshd
  • 文件描述符与内核限制
    • 提升进程可打开文件数:
      • 系统级:echo " - nofile 65535" >> /etc/security/limits.conf*
      • 验证:ulimit -n
  • 变更流程与回滚
    • 每次只改一项、变更前备份、变更后回归测试与压测(如 ab/wrk),确认 QPS/延迟/错误率 与资源指标改善后再推广。

0