├── Dockerfile ├── README.md ├── build.sh ├── index.html ├── nginx.conf ├── tc_limit.sh └── tcp-cal2.png /Dockerfile: -------------------------------------------------------------------------------- 1 | # 使用官方 nginx 镜像作为基础镜像 2 | FROM nginx:alpine 3 | 4 | # 将当前目录下的 index.html 复制到 nginx 的默认网页目录 5 | COPY index.html /usr/share/nginx/html/ 6 | 7 | # 复制自定义的 nginx 配置文件 8 | COPY nginx.conf /etc/nginx/conf.d/default.conf 9 | 10 | # 暴露 80 端口 11 | EXPOSE 80 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TCP 缓冲区计算器 2 | 3 | 一个简单的网页工具,用于计算 TCP 缓冲区大小和带宽延迟积(BDP)。 4 | 5 | ![](./tcp-cal2.png) 6 | 7 | > 相关文章:[TCP 调优参数计算器](https://www.nodeseek.com/post-199442-1) 8 | > 在线使用:[TCP 调优参数计算器](https://tcp-cal.mereith.com) 9 | 10 | ## 功能特点 11 | 12 | - 计算带宽延迟积(BDP) 13 | - 提供推荐的 TCP 缓冲区设置 14 | - 支持 Mbps 带宽输入 15 | - 支持毫秒级 RTT 输入 16 | - 提供 Docker 容器部署支持 17 | 18 | ## 快速开始 19 | 20 | ### Docker 部署 21 | 22 | ```shell 23 | #拉取镜像 24 | docker pull mereith/tcp-cal:latest 25 | #运行容器 26 | docker run -d -p 80:80 mereith/tcp-cal:latest 27 | ``` 28 | 29 | 访问 `http://localhost:80` 即可使用计算器。 30 | 31 | ### 手动部署 32 | 33 | 直接将 `index.html` 文件部署到任何 Web 服务器即可。 34 | 35 | ## 使用方法 36 | 37 | 1. 输入带宽(单位:Mbps) 38 | 2. 输入 RTT(单位:毫秒) 39 | 3. 点击"计算"按钮 40 | 4. 查看计算结果和建议的 TCP 缓冲区设置 41 | 42 | ## 构建说明 43 | 44 | 项目包含 Docker 构建脚本,可以使用以下命令构建并推送镜像: 45 | 46 | ```bash 47 | ./build.sh 48 | ``` 49 | 50 | ## PS 51 | 52 | `tc_limit` 是另一个限流思路的调优脚本,我没仔细测试,需要的话可以试试看。 53 | 54 | ## 许可证 55 | 56 | MIT License 57 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IMAGE=mereith/tcp-cal 4 | VERSION=v0.1.0 5 | 6 | echo "Building Docker image: ${IMAGE}:${VERSION}" 7 | 8 | docker buildx build \ 9 | --platform linux/amd64 \ 10 | --tag ${IMAGE}:${VERSION} \ 11 | --tag ${IMAGE}:latest \ 12 | --push \ 13 | . -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | TCP缓冲区计算器 8 | 60 | 61 | 62 | 63 |
64 |

TCP缓冲区计算器

65 |
66 | 67 | 68 |
69 |
70 | 71 | 72 |
73 | 74 | 93 |
94 | 95 | 142 | 143 | 144 | -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | server_name _; 4 | root /usr/share/nginx/html; 5 | index index.html; 6 | 7 | location / { 8 | try_files $uri $uri/ /index.html; 9 | } 10 | } -------------------------------------------------------------------------------- /tc_limit.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 检查是否以root权限运行 4 | if [ "$EUID" -ne 0 ]; then 5 | echo "请使用root权限运行此脚本" 6 | exit 1 7 | fi 8 | 9 | # 设置网络参数 10 | echo "正在配置系统网络参数..." 11 | cat >> /etc/sysctl.conf << EOF 12 | net.ipv4.tcp_wmem = 4096 16384 67108864 13 | net.ipv4.tcp_rmem = 4096 87380 67108864 14 | EOF 15 | 16 | # 使网络参数生效 17 | sysctl -p 18 | 19 | # 获取网络接口名称 20 | echo "可用的网络接口:" 21 | ip a 22 | read -p "请输入要限速的网络接口名称(默认eth0): " INTERFACE 23 | INTERFACE=${INTERFACE:-eth0} 24 | 25 | # 获取限速值 26 | read -p "请输入限速值(Mbit): " SPEED_LIMIT 27 | 28 | # 清除现有TC配置 29 | tc qdisc del dev $INTERFACE root 2>/dev/null 30 | 31 | # 配置TC限速 32 | echo "正在配置TC限速..." 33 | tc qdisc add dev $INTERFACE root handle 1:0 htb default 10 34 | tc class add dev $INTERFACE parent 1:0 classid 1:1 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}mbit 35 | tc filter add dev $INTERFACE protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:1 36 | tc class add dev $INTERFACE parent 1:0 classid 1:2 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}mbit 37 | tc filter add dev $INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:2 38 | 39 | # 显示TC配置结果 40 | echo "当前TC配置:" 41 | tc qdisc show dev $INTERFACE 42 | tc class show dev $INTERFACE 43 | tc -s filter show dev $INTERFACE 44 | 45 | # 配置开机自启 46 | echo "正在配置开机自启..." 47 | cat > /etc/rc.local << EOF 48 | #!/bin/bash 49 | tc qdisc add dev $INTERFACE root handle 1:0 htb default 10 50 | tc class add dev $INTERFACE parent 1:0 classid 1:1 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}mbit 51 | tc filter add dev $INTERFACE protocol ip parent 1:0 prio 1 u32 match ip src 0.0.0.0/0 flowid 1:1 52 | tc class add dev $INTERFACE parent 1:0 classid 1:2 htb rate ${SPEED_LIMIT}mbit ceil ${SPEED_LIMIT}mbit 53 | tc filter add dev $INTERFACE protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:2 54 | 55 | exit 0 56 | EOF 57 | 58 | # 设置rc.local可执行权限 59 | chmod +x /etc/rc.local 60 | 61 | echo "配置完成!系统将在重启后自动应用限速设置" 62 | echo "当前限速值为: ${SPEED_LIMIT}Mbit" -------------------------------------------------------------------------------- /tcp-cal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mereithhh/tcp-cal/49f79b460ab69a247d5ba3970503d256b673968b/tcp-cal2.png --------------------------------------------------------------------------------