温馨提示×

centos context如何优化性能

小樊
44
2025-12-13 17:15:13
栏目: 智能运维

CentOS 性能优化实战指南

一 基线评估与监控

  • 建立可复现的压测场景,先采集基线指标:CPU 利用率、负载、上下文切换(vmstat 1cs 列)、磁盘 I/O(iostat -x 1)、网络吞吐与丢包(如 sar -n DEV 1)。
  • 持续监控与瓶颈定位:用 top/htop 观察热点进程,free -h 检查内存与缓存,vmstat 判断 swap 与 I/O 压力,iostat/iotop 定位磁盘瓶颈,tcpdump/wireshark 分析异常流量或重传。
  • 优化前备份配置,在测试环境验证,分阶段上线并回滚预案,避免一次性大幅改动。

二 内核与网络优化

  • 文件句柄与内核对象
    • 提升系统级上限:在 /etc/sysctl.conf 设置 fs.file-max(如 100 万+),并合理设置 kernel.sem(如 250 32000 32 128)以匹配数据库/中间件并发需求。
  • 内存管理
    • 降低换页倾向:设置 vm.swappiness=10;适度降低 vm.vfs_cache_pressure=50,在内存充裕时保留更多目录项/索引节点缓存,减少元数据抖动。
  • 网络栈关键参数(示例为通用高并发场景,按带宽与延迟调优)
    • 连接队列与端口:
      • net.core.somaxconn=16384
      • net.core.netdev_max_backlog=32768
      • net.ipv4.tcp_max_syn_backlog=16384
      • net.ipv4.ip_local_port_range=1024 65535
    • 缓冲区与自动调优:
      • net.core.rmem_max=873200;net.core.wmem_max=873200
      • net.ipv4.tcp_rmem=32768 436600 873200
      • net.ipv4.tcp_wmem=32768 436600 873200
      • net.ipv4.tcp_mem=786432 1048576 1572864
    • 可靠性与回收:
      • net.ipv4.tcp_syncookies=1
      • net.ipv4.tcp_tw_reuse=1
      • net.ipv4.tcp_fin_timeout=30
      • net.ipv4.tcp_keepalive_time=1800;tcp_keepalive_intvl=30;tcp_keepalive_probes=3
      • net.ipv4.tcp_retries2=5
    • 应用配合:服务端 listen(backlog) 需与 somaxconn 匹配;短连接高并发场景优先开启 tcp_tw_reuse 并合理控制 tcp_max_tw_buckets

三 文件系统与磁盘 I/O

  • 挂载选项:在 /etc/fstab 为数据盘增加 noatime,nodiratime(必要时 discard 用于 SSD),减少元数据写入;选择 XFS/ext4 并规划合适的 stride/块大小 与日志策略。
  • I/O 调度器:SSD 优先 none/mq-deadline,机械盘可用 cfqdeadline;通过 /sys/block/sdX/queue/scheduler 临时切换并压测对比。
  • 空间与维护:预留 5–10% 空间避免碎片与写入抖动;定期 fstrim(SSD)并检查 smartctl 健康状态。

四 资源限制与容器场景

  • 用户与进程限制
    • /etc/security/limits.conf 提升软/硬限制(如 nofile 65535),对守护进程与中间件生效;在 systemd 服务单元中使用 LimitNOFILE= 覆盖。
  • 内存控制组 cgroups
    • 为关键服务设置内存上限,防止 OOM 级抖动:创建 memory:/mygroup,写入 memory.limit_in_bytes=536870912(512MB),将进程 PID 写入 tasks;或在服务文件中使用 MemoryLimit=512Msystemctl daemon-reload && systemctl restart <svc>
  • 容器与虚拟化
    • 容器平台(如 OpenShift/K8s)将“上下文”理解为 Pod/容器 的资源请求与限额(requests/limits),结合 QoS 与节点亲和/反亲和,避免争用;为数据库/缓存等设置 Guaranteed QoS 与合适的 HugePages(如透明大页策略)。
  • 临时释放页面缓存(仅用于定位,不建议生产常开)
    • 写入 /proc/sys/vm/drop_caches1(页缓存)、2(dentry/inode)、3(全部)。

五 应用与维护建议

  • 应用级调优
    • Java:合理设置堆与元空间(如 -Xms/-Xmx 相等、-XX:MetaspaceSize=…),选择低停顿 GC(如 G1GC),并结合 JVM 线程/连接池 与内核参数联动压测。
    • Web/代理/数据库:调整 worker_connections/keepalive/连接池;数据库启用 缓存/分区/合适索引;必要时引入 负载均衡/CDN
  • 系统维护
    • 保持系统与软件包更新;关闭不必要的服务与内核模块;NTP 时间同步;按需精简日志与轮转策略,避免磁盘被占满。

0