CentOS从零开始优化系统性能的策略
小樊
44
2025-12-31 11:05:38
从零开始优化 CentOS 系统性能
一 基线评估与监控
- 建立性能基线:记录CPU利用率、负载、内存使用、磁盘 IOPS/吞吐、网络带宽与丢包/重传等关键指标,便于评估优化成效。
- 常用工具与用途:
- 系统资源:top/htop、vmstat、iostat -x 1、sar -n DEV 1(CPU/内存/IO/网络趋势)
- 连接与端口:ss -s、netstat -s、lsof -nP
- 块设备与文件系统:lsblk、blockdev --getra /dev/sdX、cat /sys/block/sdX/queue/scheduler
- 调优前后对比:保存快照,观察p95/p99 延迟、错误率、队列长度变化。
二 系统层优化
- 更新与精简
- 保持系统与软件包为最新稳定版:执行yum update -y;定期yum clean all清理缓存;如无图形需求,优先轻量桌面或无 GUI。
- 启动与自启
- 关闭不必要的服务与自启项:如bluetooth(示例:systemctl disable --now bluetooth),减少常驻占用。
- 资源限制
- 提升文件描述符上限:编辑**/etc/security/limits.conf与/etc/sysctl.conf的fs.file-max**,并验证ulimit -n;服务(如数据库、Nginx)按需单独配置。
- 透明大页 THP
- 对数据库/低延迟场景,建议将 THP 设为madvise或关闭,避免合并/分裂带来的CPU抖动与延迟波动。
- CPU 电源策略
- 对延迟敏感型负载,将 CPU governor设为performance(示例:cpupower frequency-set -g performance)。
- NUMA 策略
- 若应用对跨 NUMA 访问敏感且出现内存充足却用 swap等异常,可在BIOS 或内核启动参数层面评估关闭 NUMA;更推荐绑定进程到指定 NUMA node以稳定性能。
三 存储与文件系统优化
- 调度器选择
- 机械盘优先deadline;SSD/NVMe优先noop(或 mq-deadline);查看/调整:cat /sys/block/sdX/queue/scheduler。
- 队列与预读
- 提升nr_requests(如 128→512)增强队列深度;顺序读场景增大read_ahead_kb(如 128→4096 或更高)。
- 挂载选项
- 通用:noatime,nodiratime减少元数据写入;数据库/大文件场景优先XFS;SSD 建议启用discard/TRIM(fstab 挂载参数)。
- 缓存与回刷
- 合理设置vm.swappiness(如10用于数据库/缓存型负载);根据负载调优dirty_ratio/dirty_background_ratio,避免前台写入抖动。
- LVM 与缓存
- 结合LVM Cache/Bcache用 SSD 加速 HDD;扩容后按文件系统类型执行xfs_growfs/resize2fs。
四 网络优化
- 连接与端口
- 扩大本地端口范围:net.ipv4.ip_local_port_range = 1024 65535
- 增大listen 队列与内核接收队列:net.core.somaxconn、net.ipv4.tcp_max_syn_backlog、net.core.netdev_max_backlog
- 开启SYN Cookies:net.ipv4.tcp_syncookies = 1
- 优化TIME_WAIT:启用net.ipv4.tcp_tw_reuse = 1;谨慎使用tcp_tw_recycle(在NAT/负载均衡下易异常,且4.12+ 已移除);按需设置net.ipv4.tcp_max_tw_buckets。
- 缓冲区与内存
- 提升套接字缓冲:net.core.rmem_default/wmem_default、net.core.rmem_max/wmem_max
- 调整TCP 内存阈值:net.ipv4.tcp_mem
- 加速死连接探测:net.ipv4.tcp_keepalive_time / tcp_keepalive_intvl / tcp_keepalive_probes
- 提升丢包恢复:net.ipv4.tcp_sack = 1;在部分场景可关闭tcp_timestamps降低开销(高精度 RTT 需评估)。
- 网卡与队列
- 启用多队列 RPS/RFS或RSS分散软中断;结合ethtool -L/-G调整RX/TX 队列与中断绑定,提升高并发收包能力。
五 应用与服务优化与变更管控
- 服务参数
- Web/反向代理:优化worker 进程数、连接复用、keepalive、超时;数据库:合理设置缓冲池、连接数、日志与刷盘策略;中间件:调整队列、线程池、GC/缓存。
- 防火墙与安全
- 不建议直接关闭防火墙;应最小化放行必要端口与来源,减少攻击面同时保持性能。
- SELinux
- 不建议长期禁用 SELinux;优先配置策略/布尔值解决权限问题,必要时仅permissive短时排障。
- 变更流程
- 任何优化前备份关键配置与数据;遵循灰度/回滚;先在测试环境验证;优化后持续监控并记录差异,按指标逐步迭代。