温馨提示×

怎样用centos优化系统性能

小樊
43
2026-01-08 02:02:53
栏目: 智能运维

CentOS 系统性能优化实操清单

一 基线评估与监控

  • 建立可复现的压测基线:用 ab/wrk/curl -w 记录 DNS、TCP、首包、总耗时;用 ss -s / netstat -n | awk 观察连接状态分布(如 ESTAB、TIME-WAIT)。
  • 资源面监控:用 top/htop、vmstat 1、iostat -x 1、sar -n DEV 1 观察 CPU 利用率、上下文切换、I/O 等待、网络吞吐与丢包。
  • 瓶颈定位:高 %wa 多为磁盘瓶颈;高 si/so 提示内存不足致换页;高 r 伴随长运行队列提示 CPU 饱和;TIME-WAIT 过多提示短连接并发或端口/回收策略需优化。
  • 变更流程:每次只调整一类参数,记录变更前后指标与业务指标(如 P95/P99 延迟、QPS),保留回滚方案。

二 内核与资源限制

  • 文件描述符与进程数
    • 系统级:在 /etc/sysctl.conf 设置 fs.file-max(如:6553500),执行 sysctl -p 生效。
    • 用户级:在 /etc/security/limits.conf 增加
      * soft nofile 65535
      * hard nofile 65535
      
      重新登录或重启会话后生效。
  • CPU 电源策略
    • 安装工具:yum install -y cpupowerutils
    • 查看与切换:cpupower -c all frequency-infocpupower -c all frequency-set -g performance(将 governor 设为 performance)。
  • 透明大页 THP
    • 建议对数据库/中间件等低延迟场景关闭:
      echo never > /sys/kernel/mm/transparent_hugepage/enabled
      echo never > /sys/kernel/mm/transparent_hugepage/defrag
      
  • NUMA 与 zone_reclaim
    • 若应用对延迟敏感且出现“内存尚有但发生 swap”的现象,可在 BIOS 或内核启动参数层面评估关闭 NUMA;在 NUMA 场景下可将 vm.zone_reclaim_mode=0 降低跨节点回收概率。
  • tuned 服务
    • 若已手工完成系统调优,建议关闭可能覆盖参数的 tuned
      tuned-adm off
      systemctl stop tuned
      systemctl disable tuned
      
  • 内存水位与回收倾向
    • 大数据/低延迟场景可将 vm.swappiness 调低(如:1–10),并合理设置 vm.min_free_kbytes(如:4GB 起,视内存总量 1–8GB 区间评估),避免频繁直接回收导致抖动。

三 磁盘与文件系统

  • 调度器选择
    • 机械盘/通用数据库负载优先 deadline;SSD/NVMe 或虚拟化/RAID 控制器场景优先 noop
    • 查看与临时切换:
      cat /sys/block/sdX/queue/scheduler
      echo deadline > /sys/block/sdX/queue/scheduler
      
  • 队列与预读
    • 适度增大队列与预读(示例):
      echo 512 > /sys/block/sdX/queue/nr_requests
      echo 8192 > /sys/block/sdX/queue/read_ahead_kb
      
  • 挂载选项
    • 减少元数据写入:在 /etc/fstab 为数据盘增加 noatime,nodiratime;大文件/海量小文件场景优先考虑 XFS
  • SSD 优化
    • 确认支持 TRIM 后,在 fstab 挂载参数增加 discard(或使用周期性 fstrim);如为 XFS,可结合 data=writeback 提升写吞吐(需评估数据一致性与风险)。
  • LVM/缓存与阵列
    • 利用 LVM Cache/BcacheSSD 加速 HDD;构建 RAID10/RAID0(视业务取舍性能与冗余)。

四 网络与并发

  • 关键 sysctl(写入 /etc/sysctl.conf 后执行 sysctl -p
    • 连接与队列:
      net.core.somaxconn = 65535
      net.core.netdev_max_backlog = 262144
      net.ipv4.tcp_max_syn_backlog = 262144
      
    • 端口与回收:
      net.ipv4.ip_local_port_range = 1024 65000
      net.ipv4.tcp_tw_reuse = 1
      net.ipv4.tcp_fin_timeout = 30
      # 注意:net.ipv4.tcp_tw_recycle 在 4.12+ 已移除,且在 NAT/负载均衡前慎用或禁用
      net.ipv4.tcp_max_tw_buckets = 6000
      
    • 可靠性与保活:
      net.ipv4.tcp_syncookies = 1
      net.ipv4.tcp_synack_retries = 1
      net.ipv4.tcp_keepalive_time = 30
      net.ipv4.tcp_sack = 1
      
    • 缓冲区(按内存与带宽评估):
      net.core.rmem_default = 8388608
      net.core.wmem_default = 8388608
      net.core.rmem_max = 16777216
      net.core.wmem_max = 16777216
      
  • 防火墙与连接跟踪
    • 精简规则、合并区域与规则链,减少不必要的连接跟踪与日志开销;必要时为关键业务端口设置 ip_local_reserved_ports 避免占用。
  • 带宽与 QoS
    • 使用 tc 做整形与优先级,避免单一应用挤占带宽;对跨地域/多运营商链路可结合 CDN/多线 降低往返时延与拥塞。
  • 抓包与排障
    • tcpdump -i eth0 -w http.pcap ‘port 80’ 定位握手、重传、慢启动等问题。

五 应用与服务与变更回滚

  • Web/代理(Nginx/Apache)
    • 合理设置 worker_processes/worker_connections/keepalive;启用 gzip、open_file_cache;静态资源走 CDN
  • 数据库(MySQL/PostgreSQL)
    • 结合内存与负载设置 innodb_buffer_pool_size、连接池、日志与刷盘策略;按需使用分区/索引/缓存。
  • Java 应用
    • 典型 JVM(HotSpot)示例:
      -Xms2g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC
      
  • 通用服务
    • 关闭不必要的服务与定时任务;为关键服务设置 CPU/内存/IO 限额(如 systemd CPUAffinity/MemoryLimit 或 cgroups)。
  • 变更与回滚
    • 使用 git/配置管理保存基线;变更前备份关键配置(如 sysctl.conf、limits.conf、fstab、grub 启动参数);分阶段灰度与回滚窗口;保留 变更单回滚步骤

0