首页主机资讯CentOS Stream 8系统优化实战案例

CentOS Stream 8系统优化实战案例

时间2026-01-21 02:27:04发布访客分类主机资讯浏览612
导读:实战目标与适用场景 面向CentOS Stream 8的生产与边缘场景,覆盖网络高并发、MQTT 物联网接入、虚拟化/容器与Web/PHP四类常见负载,提供可落地的配置与验证步骤。 优化遵循“先基线、后调优、再压测”的闭环,优先保证稳定性...

实战目标与适用场景

  • 面向CentOS Stream 8的生产与边缘场景,覆盖网络高并发MQTT 物联网接入虚拟化/容器Web/PHP四类常见负载,提供可落地的配置与验证步骤。
  • 优化遵循“先基线、后调优、再压测”的闭环,优先保证稳定性与安全性,再追求吞吐与时延的改善。

基线准备与系统加固

  • 基础更新与仓库
    • 执行:sudo dnf update -y & & sudo dnf install epel-release -y
    • 说明:引入EPEL扩展包,为后续监控、安全与性能工具提供依赖。
  • 安全加固与运维账户
    • 创建运维账号并加入wheelsudo useradd -m -s /bin/bash ops & & sudo usermod -aG wheel ops
    • SSH 加固:sudo sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_configsudo sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config,随后 sudo systemctl restart sshd
    • 防火墙启用与端口放行:sudo systemctl enable --now firewalld,按需放行业务端口(见下一节 MQTT 示例)。
  • 时间同步
    • 建议启用chronyNTP保持时钟一致:sudo dnf install chrony -y & & sudo systemctl enable --now chronyd(或安装 ntp/ntpd 并启用)。
  • 说明
    • 不建议为性能直接关闭SELinux;应通过策略与最小权限原则解决权限问题。

内核与网络优化

  • 文件句柄与内核参数
    • 建议基线:fs.file-max = 2097152fs.nr_open = 2097152
    • 网络与连接:net.core.somaxconn = 65535net.core.netdev_max_backlog = 65536net.ipv4.tcp_max_syn_backlog = 65536
    • 长连接保活(MQTT/长 TCP):net.ipv4.tcp_keepalive_time = 600net.ipv4.tcp_keepalive_probes = 3net.ipv4.tcp_keepalive_intvl = 15
    • 应用生效:echo 'fs.file-max=2097152' | sudo tee -a /etc/sysctl.conf & & echo 'net.core.somaxconn=65535' | sudo tee -a /etc/sysctl.conf & & sudo sysctl -p
  • 可选优化(按负载与设备选择)
    • 减少页缓存回写抖动:vm.dirty_ratio = 50vm.dirty_background_ratio = 10
    • I/O 调度器:SSD/NVMe 优先 none/mq-deadline;查看与临时设置示例:cat /sys/block/sda/queue/schedulerecho deadline | sudo tee /sys/block/sda/queue/scheduler
  • 重要提示
    • NAT/负载均衡或跨机房环境,避免使用已被主流内核弃用的 net.ipv4.tcp_tw_recycle;如需缓解 TIME_WAIT,优先使用 tcp_tw_reuse 与合理的连接复用/超时策略。

存储与文件系统优化

  • 挂载选项
    • 通用优化:在 /etc/fstab 中为数据盘增加 noatime,nodiratime,减少元数据写入;示例:/dev/sdb1 /data ext4 defaults,noatime,nodiratime 0 0
    • 应用特性:数据库/时序库等随机写密集场景优先使用 XFS;虚拟化镜像与快照场景可考虑 LVM thinbtrfs(需充分测试)。
  • 虚拟化与 Ceph RBD 场景
    • 镜像与驱动:优先使用 virtio-blkvirtio-scsi;RBD 场景建议 cache=none 并配合 OSD/客户端调优,降低额外缓存层带来的不一致与抖动。
    • 基准方法:在 VM 内使用 fio 进行 4K/16K 随机读写与不同 iodepth 的压测,验证调度器、队列深度与缓存策略的组合效果。

实战案例一 物联网 MQTT 高并发接入

  • 目标:单节点支撑10万级 MQTT 并发,启用 TLS,并基于用户/主题的ACL 控制。
  • 软件与仓库
    • sudo dnf install epel-release -y & & sudo dnf install emqx-enterprise -y
  • 防火墙放行
    • sudo firewall-cmd --permanent --add-port=1883/tcp & & sudo firewall-cmd --permanent --add-port=8883/tcp & & sudo firewall-cmd --reload
  • TLS 证书
    • 使用 certbot 获取证书:sudo certbot certonly --standalone -d mqtt.example.com
    • 将证书拷贝至 EMQX:/etc/emqx/certs/,配置 listeners.ssl.defaultkeyfilecertfile
  • EMQX 关键配置
    • 最大连接:listeners.ssl.default { bind = "0.0.0.0:8883"; max_connections = 100000; ssl_options { keyfile = "/etc/emqx/certs/privkey.pem"; certfile = "/etc/emqx/certs/fullchain.pem"; } }
    • 设备认证:emqx_ctl users add device_001 $6$rounds=10000$somesalt$hashed_password
    • ACL 示例:{ allow, { user, "device_001"} , publish, ["sensors/001/#"]} { allow, { user, "backend"} , subscribe, ["sensors/#"]} { deny, all}
  • 内核与系统配合
    • 采用上文“文件句柄与网络参数”的高并发基线;必要时结合 CPU 亲和/中断绑定EMQX 节点/监听器调优进行二次压测。

实战案例二 Web 与 PHP 应用加速

  • 目标:在 Nginx + PHP-FPM 架构下,通过 OPcacheJIT 提升响应与吞吐。
  • OPcache 启用
    • 编辑 /etc/php.d/10-opcache.iniopcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=10000opcache.validate_timestamps=0(生产建议关闭时间戳验证,配合部署流程刷新)。
  • PHP-FPM 进程管理
    • /etc/php-fpm.d/www.confpm = ondemand(或 dynamic),pm.max_children = 50pm.start_servers = 4pm.min_spare_servers = 2pm.max_spare_servers = 6
    • 重载:sudo systemctl reload php-fpm
  • PHP 8.x 与 JIT
    • 升级至 PHP 8.0+ 后启用 JIT:opcache.jit_buffer_size=256Mopcache.jit=1235
    • 验证:php -r "echo json_encode(opcache_get_status()); " | grep jitted_functions_count
  • 数据库与连接
    • 建议使用持久连接连接池,并对高频 SQL 建立索引;避免 ORM 层 N+1 查询与循环内查询。

验证与回滚

  • 基线采集
    • 网络/连接:ss -snetstat -n | awk '/^tcp/ { ++S[$NF]} END { for(a in S) print a, S[a]} 'sar -n TCP,ETCP 1 60
    • 文件句柄:cat /proc/sys/fs/file-nr
    • 磁盘:iostat -x 1 60vmstat 1 60
    • 应用:MQTT 用 emqx_ctl listenersemqx_ctl status;PHP 用 ab/wrk 与业务关键路径 P95/P99。
  • 压测方法
    • MQTT:使用 emqtt-benchJMeter 逐步从 1k 并发提升到目标并发,观察连接成功率、消息时延、CPU/内存/网络瓶颈。
    • Web/PHP:使用 wrk/ab 进行 30–60 秒压测,对比 QPS、P95/P99、错误率OPcache/JIT 命中率。
  • 回滚策略
    • 所有变更采用“小步提交 + 可回滚”:参数变更记录在案;关键文件(如 /etc/sysctl.conf/etc/fstabsshd_config)修改前先备份;异常时按备份快速恢复并降级参数。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS Stream 8系统优化实战案例
本文地址: https://pptw.com/jishu/787977.html
CentOS Stream 8用户权限管理指南 CentOS Stream 8日志分析工具推荐

游客 回复需填写必要信息