网络调优的闭环方法
内核网络参数调优应当是可复现的闭环:先量化现状形成基线,再单变量变更,用同一测量方法复测,记录结论并保留回滚手段。内核计数器都是累计值,必须用区间差值观察,否则无法把变更与效果对应起来。没有基线的「调优」只是猜测。
基本信息
| 基线采集 | nstat -az > /tmp/net-before.txt |
|---|---|
| 变更后对比 | nstat -az | diff /tmp/net-before.txt - |
| 持久化位置 | /etc/sysctl.d/99-*.conf,然后 sysctl --system |
| 回滚方式 | 删除对应行或文件后再次 sysctl --system |
| 记录内容 | 变更原因、时间、变更前后数据、观察结论 |
执行步骤
- 明确要解决的问题与可量化的目标指标
- 采集 10 分钟以上的基线,覆盖业务高峰与低谷
- 一次只改一项参数,并写下预期影响
- 用与基线相同的工具、时段与口径复测
- 记录差值结论;未达预期就回滚,而不是继续叠加参数
基线与复测
基线与复测
nstat -az > /tmp/net-before.txt # 变更前:所有计数器留档
ss -s > /tmp/ss-before.txt # 连接状态分布留档
nstat -az | diff /tmp/net-before.txt - # 变更后:只看发生变化的计数器持久化与回滚
持久化与回滚
echo 'net.ipv4.tcp_max_syn_backlog = 4096' > /etc/sysctl.d/99-tune.conf
sysctl --system # 重新加载并确认无报错
sysctl net.ipv4.tcp_max_syn_backlog # 校验生效值
# 回滚:删除对应行或整个文件后再次 sysctl --system用 sysctl -w 只改运行态,重启即失效;正式变更必须落到 /etc/sysctl.d/ 下的文件,并在变更记录里同时写明运行态与配置文件的对应关系。
涉及连接回收、重传、队列长度的参数在高并发下可能引发连锁反应。生产环境变更前应确认回滚路径可用,并准备好在异常时立刻恢复默认值。
变更记录要点
- 变更目标:要解决的具体性能或稳定性问题
- 变更内容:配置文件、参数名、原值与新值
- 验证方式:使用哪个工具、采样多久、对比哪个时间区间
- 回滚步骤:恢复到哪个值、由谁执行、如何验证已恢复
同一次变更尽量不要跨越业务高峰:高峰时段的流量特征变化本身就会影响计数器,叠加参数变更后很难判断谁是主因。