云服务器性能调优实战:CPU、内存、磁盘全方位优化

性能调优前:先定位瓶颈

调优的前提是找到真正的瓶颈。盲目优化往往事倍功半。常用的诊断命令:

# 查看CPU和内存整体使用率
top -bn1 | head -20

# 查看CPU详细信息(每核利用率)
mpstat -P ALL 1 3

# 查看内存使用详情
free -h && cat /proc/meminfo | grep -E "Cached|Buffer|Swap"

# 查看磁盘I/O
iostat -xz 1 3

# 查看网络流量
sar -n DEV 1 3

通过以上命令,可以快速判断瓶颈是 CPU、内存、磁盘还是网络。

CPU优化

1. 调整CPU调度策略

对于Web服务器,将 CPU 调度器设置为 performance 模式(而非默认的 powersave):

# 查看当前调度模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# 设置为performance模式(需要root)
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

2. 进程优先级调整

使用 nicerenice 调整关键进程的优先级,给 Nginx/MySQL 更高的调度优先级:

# 降低非关键进程的优先级(nice值越大优先级越低)
renice +10 -p [非关键进程PID]

# 提升关键进程优先级
renice -5 -p [Nginx/MySQL的PID]

内存优化

1. 调整Swappiness参数

默认 swappiness=60 表示系统会较早使用 Swap,对于内存充足的服务器应降低此值:

# 临时修改(重启失效)
sysctl vm.swappiness=10

# 永久修改
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

2. 定期清理Page Cache

当服务器内存持续高位,可以释放页缓存(不影响运行中的进程):

# 释放page cache
sync && echo 1 > /proc/sys/vm/drop_caches

# 释放dentries和inodes
sync && echo 2 > /proc/sys/vm/drop_caches

# 全部释放
sync && echo 3 > /proc/sys/vm/drop_caches

3. 优化MySQL/MariaDB内存配置

MySQL 是内存消耗大户,合理配置可大幅提升性能:

[mysqld]
# InnoDB缓冲池,建议设为可用内存的50-70%
innodb_buffer_pool_size = 1G

# 查询缓存(MySQL 5.x有效,8.0已移除)
query_cache_size = 64M
query_cache_type = 1

磁盘I/O优化

1. 选择合适的I/O调度器

云服务器通常使用 SSD,应将 I/O 调度器设置为 nonemq-deadline

# 查看当前调度器
cat /sys/block/sda/queue/scheduler

# 修改为none(SSD推荐)
echo none > /sys/block/sda/queue/scheduler

2. 启用noatime挂载选项

默认每次文件访问都会更新 atime,对高并发场景有一定I/O压力。在 /etc/fstab 中添加 noatime

/dev/sda1  /  ext4  defaults,noatime  0  1

网络参数优化

针对高并发Web服务,优化内核网络参数:

# /etc/sysctl.conf 中添加
# 增大TCP连接队列
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# 开启TCP Fast Open
net.ipv4.tcp_fastopen = 3

# 优化TIME_WAIT
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

# 扩大端口范围
net.ipv4.ip_local_port_range = 1024 65535

sysctl -p

总结:调优是持续过程

服务器性能调优没有一劳永逸的方案,需要根据业务特点和流量变化持续调整。建议:

  • 建立性能基准(Baseline),记录调优前后的关键指标
  • 每次只改一个参数,观察效果后再改下一个
  • 使用监控系统(Prometheus+Grafana)持续观测
  • 定期Review,结合业务增长及时扩容