1. 先建立基线
任何优化前,先记录负载、内存、磁盘与网络状态。没有基线,就无法证明调整有效。
uptime
free -h
vmstat 1 10
iostat -xz 1 10
ss -s
df -hT判断原则:高 load average 不等于 CPU 一定不足;不可中断 I/O 等待同样会抬高负载。
2. 内存与 Swap
关注 available 而不是只看 free。Linux 会主动使用空闲内存做页缓存,这通常是好事。若持续发生 swap in/out,再检查应用内存上限与泄漏。
vmstat 1
# si/so 持续非零时进一步调查
ps aux --sort=-%mem | head3. 磁盘延迟
iostat -xz 中的 await、util 与队列深度需要结合存储类型分析。数据库慢查询有时表现为磁盘瓶颈,根因却是缺少索引。
4. 网络与连接队列
先确认丢包、重传和连接状态,再调整队列。不要在没有证据时盲目套用“万能 TCP 参数”。
ss -s
nstat -az | grep -E 'Retrans|ListenOverflows'
ip -s link5. 应用层优先
页面缓存、对象缓存、数据库索引和合理的并发模型,通常比内核微调带来更大的收益。每次只改变一组变量,并通过相同负载重新测量。
验收清单
- 调整前后使用同一测试工具与并发。
- 记录 P50、P95、P99,而非只看平均值。
- 观察错误率、资源占用和吞吐量。
- 准备配置备份与回滚命令。