从抓包到调参的闭环
抓包给出的是方向而不是处方:重传、窗口上限、队列堆积这些症状会指向若干候选参数,但哪一项真正起作用只能靠实验确定。做法是单变量、可复现、前后对比——一次只改一个参数,在同一业务场景下复测,并把调整前后的参数快照与抓包各留一份。这样既能说清是哪一项起了作用,也能在出现副作用时快速回退,避免「改了有效但说不清原因」。
基本信息
| 适用平台 | Linux(sysctl 参数体系) |
|---|---|
| 生效方式 | sysctl -w 临时生效;写入 /etc/sysctl.d/ 下的配置文件持久生效 |
| 记录要求 | 修改前值、修改后值、时间与责任人都要留痕 |
| 验证要求 | 同场景复测并保留两份抓包做对照 |
典型使用场景
- 长肥管道吞吐上不去,评估窗口与缓冲是否成为上限
- 空闲后重新活跃的连接起步慢,评估慢启动重置行为
- 服务端发送队列持续积压,评估发送缓冲与队列参数
- 压测环境先验证参数组合,确认后再灰度到生产
- 为容量评估提供实测数据,而不是照搬网络上的参数清单
- 事故复盘中验证「参数调整」这一动作是否真的有效
调优候选
调优候选
sysctl net.ipv4.tcp_window_scaling # 窗口缩放,通常默认开启
sysctl net.ipv4.tcp_rmem net.ipv4.tcp_wmem # 收发缓冲区间(最小/默认/最大)
sysctl net.core.rmem_max net.core.wmem_max # 套接字缓冲上限
sysctl net.ipv4.tcp_slow_start_after_idle # 空闲后是否重置慢启动
# 修改走配置文件持久化,先用 -w 做临时验证
# 每次只改一项,复测后用相同过滤条件导出对照数据候选参数读法
| 参数 | 作用 | 调整注意 |
|---|---|---|
| tcp_window_scaling | 启用窗口缩放以支持大窗口 | 关闭会限制高带宽时延积链路吞吐,一般不应关 |
| tcp_rmem / tcp_wmem | 接收与发送缓冲区间 | 上抬可缓解窗口上限,也会增加内存占用 |
| rmem_max / wmem_max | 套接字缓冲上限 | 应用未显式设置时决定实际可用缓冲 |
| tcp_slow_start_after_idle | 空闲后是否重置拥塞窗口 | 关闭可改善间歇流量,长连接突发场景需评估 |
记录参数修改前后的值、时间与责任人是闭环的一部分,否则后续复现时无法判断现状从何而来。
生产调整前先在压测环境复现相同现象,确认真实有效后再灰度,避免把线上当成试验场。