温馨提示×

CentOS卡顿怎么优化

小樊
40
2025-12-09 18:28:34
栏目: 智能运维

CentOS 卡顿优化实操指南

一 快速定位瓶颈

  • 先用以下命令确认是 CPU、内存、磁盘 I/O 还是网络 导致的卡顿,再对症优化:
    • 整体资源与负载:top/htop、uptime、free -h、vmstat 1 5、iostat -x 1、df -h、du -sh /var /tmp /home
    • 网络与连接:ss -s、iftop、nload
    • 历史与可视化:sar -u/-r/-d/-n DEV 1(需安装 sysstat)、nmon、glances、dstat
    • 若需长期观测与告警,可部署 Prometheus + GrafanaZabbix;本机也可用 Cockpit 做 Web 化监控。

二 通用系统优化

  • 更新与清理
    • 执行 yum update -y 获取性能修复与安全补丁;定期 yum clean all 清理缓存;清理 /var/log/ 下增长过快的日志并用 logrotate 管理;用 ncdu/du 找出大文件与目录。
  • 精简开机与常驻服务
    • systemctl list-unit-files --type=service 查看服务,禁用不需要的如 bluetooth(示例:systemctl disable --now bluetooth);减少图形会话或改用 XFCE/LXDE 等轻量桌面。
  • 文件系统与挂载选项
    • ext4 使用 noatime,nodiratime,对 XFS 使用 noatime,减少元数据写入;按需检查并优化 ext4 参数(如通过 tune2fs),并定期执行文件系统检查(如 fsck)。
  • 内核与资源限制
    • 调整虚拟内存:在 /etc/sysctl.conf 设置 vm.swappiness=10vm.vfs_cache_pressure=50,执行 sysctl -p 生效。
    • 提升文件描述符:在 /etc/security/limits.conf 增加
        • soft nofile 65535
        • hard nofile 65535 重新登录后生效,可用 ulimit -n 验证。
    • 可选的网络优化(高并发服务场景):在 /etc/sysctl.conf 增加
      • net.core.somaxconn = 65535
      • net.ipv4.tcp_max_syn_backlog = 65535
      • net.ipv4.ip_local_port_range = 1024 65535
      • net.ipv4.tcp_tw_reuse = 1
      • net.ipv4.tcp_fin_timeout = 30 执行 sysctl -p 生效。

三 存储与文件系统优化

  • 优先使用 SSD 替代 HDD,可显著改善 I/O 响应与抖动。
  • 选择适合业务的文件系统(如 XFS/ext4),并按需调整挂载选项(如 noatime),减少不必要的访问时间更新与写放大。
  • 规划合理的 swap(容量与策略),避免内存紧张时直接 OOM 或抖动;结合 vm.swappiness 控制换页倾向。
  • 定期巡检与维护:清理无用文件、归档与压缩旧日志、对关键分区执行周期性 fsck 检查,确保元数据与磁盘健康。

四 网络与高并发场景优化

  • 连接与端口复用
    • 在高并发短连接服务中,启用 net.ipv4.tcp_tw_reuse=1、适当降低 net.ipv4.tcp_fin_timeout=30,并放大 net.core.somaxconnnet.ipv4.tcp_max_syn_backlog,提升连接处理能力。
  • 端口与本地端口范围
    • 扩大 net.ipv4.ip_local_port_range=1024 65535,缓解端口耗尽。
  • 安全与加固的平衡
    • 不建议直接关闭 firewalld;如为排障临时关闭,务必在验证后恢复,避免暴露面扩大。
  • 可视化与持续观测
    • 结合 iftop/nload 观察带宽与突发流量,用 sar -n DEV 回溯历史网络负载,必要时上 Prometheus + Grafana 做长期趋势与阈值告警。

五 硬件升级与架构优化

  • 资源扩容
    • 常驻内存不足时优先 增加内存;I/O 成为瓶颈时优先 更换为 SSD;CPU 计算密集可考虑 多核/更高主频 或负载均衡分流。
  • 应用层优化
    • 引入 Redis/Memcached 等缓存,减少数据库直读;优化慢查询与索引;合理配置连接池与工作线程数。
  • 架构与隔离
    • 通过 虚拟化(KVM/Xen)或容器(Docker) 做资源隔离与弹性伸缩,避免单服务拖垮整机。
  • 变更风险控制
    • 任何参数调整与升级前先 备份,在 测试环境验证;变更后持续 监控与回滚预案,确保稳定性。

0