CentOS怎样优化Linux系统性能
小樊
37
2025-12-29 13:46:56
CentOS 性能优化实操清单
一 基线评估与监控
- 建立可复现的基线:记录关键指标(CPU利用率、负载、内存与 swap、磁盘 IOPS/吞吐/延迟、网络吞吐与丢包、TCP 重传与连接数)。
- 常用工具与用途:
- 资源与负载:top/htop、vmstat、sar、uptime
- 磁盘 I/O:iostat -x 1、iotop
- 网络:sar -n DEV/EDEV 1、ss -s、ethtool -S
- 优化方法论:每次只变更一个参数,变更前后对比基线;变更前备份配置;在测试环境验证后再上线生产。
二 CPU 与内存优化
- CPU 调频与调度
- 将 CPU 调频策略设为性能模式,避免频繁升降频带来的抖动:
- 安装工具:yum install -y cpupowerutils
- 查看与设置:
- cpupower -c all frequency-info
- cpupower -c all frequency-set -g performance
- 验证:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- 超线程 HT
- 检查是否开启:grep -i ht /proc/cpuinfo 或 dmidecode -t processor | grep HTT
- 影响因负载而异:计算密集型未必受益;部分存储/吞吐型负载可能受益。若需关闭,通常在 BIOS 关闭 HT,或在内核启动参数添加 noht(需重启)。
- NUMA 策略
- 检查:numactl --hardware、grep -i numa /var/log/dmesg
- 建议:数据库、消息队列、分布式存储等对延迟敏感且内存带宽吃紧的场景,优先在 BIOS 关闭 NUMA;若必须开启,使用 numactl --interleave=all 或将进程绑定到对应 NUMA 节点(如 OSD/进程绑定示例),以降低跨 NUMA 访问带来的延迟波动。
- 内存关键参数
- Transparent HugePages(THP)
- 建议多数数据库/存储/低延迟场景设为 never,避免合并/分裂带来的 CPU 抖动与延迟尖峰:
- 查看:cat /sys/kernel/mm/transparent_hugepage/enabled、cat /sys/kernel/mm/transparent_hugepage/defrag
- 临时关闭:
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
- 永久关闭:在 /etc/rc.d/rc.local 中加入上述两条并 chmod +x /etc/rc.d/rc.local,重启后验证。
- KSM(内核同页合并)
- 对 KVM 大量 Windows 客户机可能有益;对 RHEL/CentOS 上的 Ceph 等常见为负面影响,建议关闭:
- systemctl stop ksm.service ksmtuned.service && systemctl disable ksm.service ksmtuned.service
- Swappiness
- 控制换页倾向,范围 0–100。内存充足且追求低延迟时建议 10;若明确希望尽量不使用 swap 可设为 0(注意:即使为 0,cgroup 子层级可能仍继承旧值,需逐层检查与设置)。
- 查看:sysctl -a | grep swappiness
- 临时与永久:
- sysctl -w vm.swappiness=10
- 写入 /etc/sysctl.conf:echo “vm.swappiness = 10” >> /etc/sysctl.conf
- min_free_kbytes
- 过低易回收困难导致卡死,过高会人为制造内存紧张。可按内存规模预留:
- 64GB → 1GB(1048576)、128GB → 2GB(2097152)、256GB → 3GB(3145728)
- 示例:sysctl -w vm.min_free_kbytes=1048576
- 脏页刷写
- 平滑写 I/O:后台在脏页达 5% 时开始异步刷写,前台在 80% 前不会强制同步写,兼顾吞吐与卡顿:
- vm.dirty_background_ratio = 5
- vm.dirty_ratio = 80
- 可按业务抖动容忍度微调(如 10/20 等)。
三 磁盘与文件系统优化
- I/O 调度器
- 机械盘优先 deadline,SSD/NVMe 优先 none/noop 或 mq-deadline(视内核与驱动而定)。
- 查看与临时设置:
- 查看:cat /sys/block/sdX/queue/scheduler
- 设置:echo deadline > /sys/block/sdX/queue/scheduler
- 永久生效:在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 增加 elevator=deadline(或 none/noop),执行 grub2-mkconfig -o /boot/grub2/grub.cfg 后重启。
- 文件系统挂载选项
- 减少元数据写入:使用 noatime(必要时 nodiratime)
- 示例:/dev/sda1 / ext4 defaults,noatime,nodiratime 0 0
- RAID 与缓存
- 写回缓存策略与阵列级别(如 RAID10/RAID5)对吞吐与可靠性影响显著,结合业务 IOPS/冗余/容量 综合选择,并确保阵列电池/超级电容保护写回安全。
四 网络优化
- 巨型帧 Jumbo Frames
- 端到端一致(服务器网卡、交换机、对端)才能生效,常见 MTU=9000。
- 临时与永久:
- 临时:ip link set eth0 mtu 9000
- 永久:在网卡配置 /etc/sysconfig/network-scripts/ifcfg-eth0 增加 MTU=9000 并重启网络服务。
- 网卡队列与多队列
- 提升高并发收发包能力,增大 Rx/Tx ring:
- 查看:ethtool -g enp131s0f1
- 设置:ethtool -G enp131s0f1 rx 4096 tx 4096
- TCP 与连接参数
- 提升并发与缩短 TIME_WAIT 回收时间(注意不同内核/场景差异,先在测试环境验证):
- 示例(按需调整):
- 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。
五 服务、安全与变更管控
- 精简与自启
- 关闭不必要的服务与开机自启,减少资源占用与攻击面:
- 列出与禁用示例:systemctl list-unit-files --type=service;对不需要的服务执行 systemctl disable --now
- 安全与性能的平衡
- 不建议直接关闭 SELinux 或 firewalld;如为性能压测可临时关闭并在验证后恢复,生产环境应通过策略与最小权限来兼顾安全与性能。
- SSH 连接加速(对运维体验影响明显)
- 编辑 /etc/ssh/sshd_config:
- UseDNS no
- GSSAPIAuthentication no
- 重启:systemctl restart sshd
- 文件描述符与内核限制
- 提升进程可打开文件数:
- 系统级:echo " - nofile 65535" >> /etc/security/limits.conf*
- 验证:ulimit -n
- 变更流程与回滚
- 每次只改一项、变更前备份、变更后回归测试与压测(如 ab/wrk),确认 QPS/延迟/错误率 与资源指标改善后再推广。