分享:TCP调优脚本更新与自改版流量监控工具实战
最近在折腾 VPS 网络优化的路上,又有了新的心得。尤其是对于长期跑站或者搭建代理服务的站長来说,网络拥堵和流量超标总是两个让人头疼的问题。今天就把手里压箱底的 TCP 调优脚本做个升级分享,再顺便聊聊我魔改的一款流量监控工具——"流量狗",希望能帮大家榨干服务器的每一滴性能。
一、为什么我们需要 TCP 调优?
很多朋友买了高价 VPS,带宽也不小,但在跑大流量业务时总感觉“没跑满”。这在很大程度上是由于 Linux 默认的 TCP 内核参数设置偏保守,主要针对的是广域网的通用稳定性,而不是追求极致吞吐量的场景。
TCP 拥塞控制算法示意图, illustrates the flow control mechanism.
通过调优,我们主要解决几个痛点:
- 高并发下的连接建立速度:优化
tcp_tw_reuse和tcp_tw_recycle等参数,减少 TIME_WAIT 状态占用。 - 大文件传输的吞吐量:调整 TCP 窗口大小(
tcp_window_scaling)和缓冲区(tcp_rmem/wmem),让数据管道更宽。 - 弱网环境下的丢包恢复:开启 BBR 拥塞控制算法(现在已经是标配),并配合精细的参数调整。
二、更新版 TCP 调优脚本实测
这次更新的脚本,我对原有的通用参数做了基于 2026 年主流网络环境的微调。比如针对云厂商普遍升级的 10Gbps 网卡,默认的内存窗口设置可能已经成为了瓶颈。
直观的流量监控有助于及时发现带宽异常。
脚本的核心改动点:
- 自动适配:脚本运行时会检测内存大小,动态设置
net.core.rmem_max等关键参数,避免小内存机器 OOM(内存溢出)。 - BBR v2 兼容性:如果你内核支持 BBR v2,脚本会优先启用,对特定丢包场景的改善非常明显。
- 安全回滚:所有修改前的旧参数都会自动备份到
/etc/sysctl.d/99-bak.conf,跑炸了随时能还原。
如何使用:
wget -N --no-check-certificate "你的脚本链接/tcp_opt.sh" && chmod +x tcp_opt.sh && ./tcp_opt.sh
``
执行完成后,建议跑个 `iperf3` 测速,通常在长距离传输中,UDP 和 TCP 的抖动都会有明显下降。
### 三、魔改版“流量狗”上线
搞定了网速,防超限就是下一个头等大事。市面上有很多流量监控工具,比如 vnstat,虽然稳定但实时性较差,且命令行界面对于新手不够直观。
基于此,我基于经典的流量监控逻辑,整合了一个“改版流量狗”。它的特点非常鲜明:
1. **多维度报警**:不像原版只会在超额时报警,改版支持按天、按周、按月设定阈值,甚至支持“峰值预警”——比如瞬时带宽超过 500Mbps 持续 10 分钟就发微信/Telegram 通知。
2. **JSON API 输出**:为了方便对接其他的面板,我加了一个轻量级的 Web API,可以用 `curl` 获取实时的流量 JSON 数据,方便自己写 Grafana 仪表盘。
3. **进程关联**:这是一个实验性功能,尝试记录 `ss` 命令的数据,粗略统计是哪个进程占用的流量最多(虽然不绝对精准,但在排查异常流量时很有用)。
### 四、部署与避坑指南
部署这两个工具都非常简单,一键脚本即可。但在实操过程中,有几个坑大家要注意:
* **OpenVZ 魔法无效**:如果你用的是廉价的 OpenVZ 虚拟化(现在市面上不多了,但还有),TCP 调优脚本大部分参数是无法生效的,因为受控于宿主内核,建议直接放弃折腾,专注 BBR。
* **时区问题**:流量统计最怕时区对不上。改版流量狗强制使用系统时区,但在设置每日重置时间时,请务必确认一下 `date` 命令输出的时间是否与你所在的物理位置一致,否则容易搞错“新的一天”是从几点开始算的。
* **不要忽视 `ulimit`**:TCP 调优往往伴随着连接数的大幅提升,别忘了检查 `nofile` 的最大文件打开数限制,否则并发一上来直接报错 "Too many open files"。
### 写在最后
工欲善其事,必先利其器。这两个工具虽然小巧,但却是维护服务器稳定的利器。脚本我会持续维护,如果大家测试中发现效果不明显或者有冲突的参数,欢迎在评论区反馈,我们一起打磨出最适合当下的最佳实践。

评论已关闭