温馨提示×

CentOS系统如何优化回收性能

小樊
32
2025-12-07 18:01:20
栏目: 智能运维

CentOS 回收性能优化实用指南

一 内存回收与缓存优化

  • 调整内存回收倾向:降低 vm.swappiness 可减少换页,优先回收页面缓存;数据库、消息队列等内存敏感负载建议设为 10–30,计算型负载可更低。查看与设置示例:
    • 查看:cat /proc/sys/vm/swappiness
    • 临时:sysctl -w vm.swappiness=10
    • 永久:在 /etc/sysctl.conf 添加 vm.swappiness=10 后执行 sysctl -p
  • 控制脏页回刷:适度提高 vm.dirty_ratiovm.dirty_background_ratio 可降低写放大与抖动,顺序写/大文件场景可更积极;默认值因版本不同,建议先评估再微调。
    • 示例:sysctl -w vm.dirty_background_ratio=10;sysctl -w vm.dirty_ratio=40
  • 调整 VFS 缓存压力:降低 vm.vfs_cache_pressure 可更倾向保留 inode/dentry,提升路径解析命中;默认值通常为 100,可先试 50 并观察。
  • 按需清理页面缓存(仅用于诊断或空间紧张,不建议长期依赖):
    • 先同步:sync
    • 释放:echo 1 > /proc/sys/vm/drop_caches(页缓存);echo 2(slab);echo 3(全部可回收)
  • 使用 tuned 管理策略:安装并启用 tuned,选择更贴近负载的 profile(如 enterprise-storage)以统一优化内存与 I/O 行为。

二 磁盘与文件系统回收优化

  • 选择 I/O 调度器:机械盘优先 deadline(延迟更可控),SSD/NVMe 优先 noop(减少调度开销);查看与设置示例:
    • 查看:cat /sys/block/sdX/queue/scheduler
    • 设置:echo noop > /sys/block/sdX/queue/scheduler(按设备调整)
  • 调整队列与预读:适度增大 nr_requests(队列深度)与 read_ahead_kb(预读)可提升吞吐与顺序读性能;示例:
    • echo 512 > /sys/block/sdX/queue/nr_requests
    • echo 4096 > /sys/block/sdX/queue/read_ahead_kb(或用 blockdev --setra 调整)
  • 挂载选项减负:为不依赖访问时间的场景启用 noatime,nodiratime,减少元数据写入;示例:
    • /dev/sda1 / ext4 defaults,noatime,nodiratime 0 0
  • 文件系统选择:大文件/高并发元数据场景优先考虑 XFS 等更擅长扩展性的文件系统。

三 连接与端口回收优化

  • 复用与快速回收 TCP 连接:在 /etc/sysctl.conf 中启用
    • net.ipv4.tcp_tw_reuse = 1(允许将处于 TIME_WAIT 的套接字用于新的连接)
    • net.ipv4.tcp_fin_timeout = 30(缩短 FIN_WAIT_2 超时)
    • 注意:在 NAT/负载均衡 或跨主机环境中,谨慎使用 tcp_tw_recycle,避免时间戳问题导致连接异常。
  • 扩大连接队列与端口范围:
    • net.core.somaxconn = 65535
    • net.ipv4.tcp_max_syn_backlog = 8192
    • net.ipv4.ip_local_port_range = 1024 65535
  • 应用层配合:合理设置 keepalive(如 net.ipv4.tcp_keepalive_time=1200)、连接池与超时,减少短连接与半开连接堆积。

四 磁盘空间回收与日志管理

  • 清理包管理器缓存与无用包:
    • yum clean all
    • yum autoremove
    • 删除旧内核(保留最近 2 个):package-cleanup --oldkernels --count=2
  • 日志轮转与归档压缩:配置 /etc/logrotate.conf 或应用专属配置,使用 rotate、weekly、compress、delaycompress、missingok、notifempty 等策略,避免日志无限增长。
  • 定向清理大日志与临时文件:
    • 截断超大日志:find /var/log -type f -name “*.log” -size +50M -mtime +7 -exec truncate -s 0 {} ;
    • 删除过期日志:find /var/log -type f -name “*.log” -mtime +30 -exec rm -f {} ;
    • 清理临时目录:rm -rf /tmp/;必要时清理 /var/tmp/yum-
  • 空间巡检:df -h、du -h --max-depth=1 /var 定位占用热点。

五 监控与验证

  • 资源与缓存观测:
    • 内存与缓存:free -h、vmstat 1、sar -r
    • I/O 与调度:iostat -x 1、cat /sys/block/sdX/queue/scheduler
  • 变更流程与风险提示:
    • 先在测试环境验证,变更前后使用相同基准测试对比 p95/p99 延迟、吞吐、IOPS、换页与回收抖动
    • 对数据库、消息队列等核心负载,优先“降 swappiness、稳脏页回刷、扩队列/预读”,再考虑调度器与挂载选项。
    • 不建议长期依赖 drop_caches 作为“提速手段”,仅在定位与应急场景使用。

0