温馨提示×

centos fromscratch怎样优化性能

小樊
44
2026-01-02 10:10:35
栏目: 智能运维

CentOS From Scratch 性能优化路线图

一 构建阶段的基础优化

  • 选择最小化安装并仅启用必要软件包组,减少后台守护进程与内核模块数量,降低内存与CPU占用。
  • 构建时优先采用较新的稳定内核与较新的GCC/glibc工具链,获得更好的调度器、I/O栈与网络栈优化。
  • 启用编译期与运行期的性能相关选项:如内核的透明大页(THP)策略、合理的NUMA亲和与调度器选择;用户态程序建议打开编译器优化(如**-O2/-O3 -march=native**),并开启LTO(若工具链支持)。
  • 文件系统与块层:构建阶段即规划好分区对齐与I/O调度策略(SSD优先none/mq-deadline),为后续挂载参数(如noatime)打好基础。
  • 若从源码构建用户态基础组件(glibc、coreutils、openssl 等),优先使用较新的稳定版本,获取性能修复与优化。

二 系统上线后的内核与网络优化

  • 内存与虚拟内存
    • 适度降低vm.swappiness(如10–30),减少不必要的换页;数据库/内存敏感负载可更低(甚至0,需充分压测)。
    • 调整脏页刷写阈值:vm.dirty_ratio=50vm.dirty_background_ratio=10,在突发写入时更平滑,降低抖动。
  • 文件系统与挂载
    • 通用场景建议挂载选项:defaults,noatime,nodiratime;日志型文件系统(如ext4)可结合data=writeback(权衡数据一致性),数据库等高可靠场景不建议。
  • 网络栈关键参数(示例为通用高并发起点,需按业务压测微调)
    • 端口与队列:net.ipv4.ip_local_port_range=1024 65535
    • 连接复用与回收:net.ipv4.tcp_tw_reuse=1;在NAT/负载均衡或跨主机转发场景谨慎使用tcp_tw_recycle(多版本内核已废弃或默认关闭,避免误用)。
    • 超时与保活:net.ipv4.tcp_fin_timeout=30net.ipv4.tcp_keepalive_time=1200
    • 队列与连接:net.core.somaxconn=65535net.ipv4.tcp_max_syn_backlog=16384net.core.netdev_max_backlog=16384
    • 半连接保护:net.ipv4.tcp_syncookies=1
  • 生效方式:将参数写入**/etc/sysctl.conf/etc/sysctl.d/99-tune.conf**,执行sysctl -p使其生效。

三 资源限制与服务精简

  • 文件描述符与进程数
    • 系统级:fs.file-max按业务规模适度放大(如数十万级)。
    • 用户级:在**/etc/security/limits.conf**设置
        • soft nofile 65535
        • hard nofile 65535
      • root soft/hard nproc 65535
    • 注意:部分服务(如通过systemd管理的)需在单元文件或**/etc/systemd/system.conf中设置DefaultLimitNOFILE**才能继承。
  • 开机自启最小化
    • 仅保留sshd、rsyslog、crond、network等必要服务,减少常驻后台进程对CPU/内存的占用。
  • 安全与性能的平衡
    • 不建议直接禁用SELinux;如确有兼容性问题,可先设为permissive定位,再精细化策略放行,避免安全退化为性能“捷径”。

四 存储与I/O 优化

  • I/O调度器
    • 机械盘:mq-deadlinecfq;SSD/NVMe:none/mq-deadline;可通过**/sys/block/sdX/queue/scheduler查看与临时切换,生产环境建议写入GRUB_CMDLINE_LINUX**并生成grub配置持久化。
  • 调度与缓存策略
    • 结合业务选择ionice(如批处理任务用best-effort:3),避免与关键业务争抢I/O。
    • 合理设置read_ahead_kb(如128–256 KB起步),减少随机读放大。
  • 文件系统与挂载
    • noatime/nodiratime外,可按需使用barrier=0(仅电池保护或具掉电保护的存储),并控制journal大小与写入策略(权衡一致性与性能)。

五 监控验证与迭代

  • 监控与瓶颈定位
    • 资源全景:top/htop、vmstat、iostat -x 1、sar -n DEV 1;网络长连接与重传:ss -s、netstat -s
    • 内核与网络细节:/proc/interrupts(软/硬中断分布)、/proc/net/sockstat(套接字与TIME_WAIT等)。
  • 压测与回归
    • 使用ab、wrk、jmeter等进行压力测试,观察QPS、P95/P99延迟、错误率、带宽/pps;每次只变更一个参数并保留基线,便于回滚与对比。
  • 重要提示
    • 生产变更务必在灰度/测试环境验证;涉及内核参数、I/O调度器与SELinux策略的调整,需结合业务容忍度与SLA要求谨慎推进。

0