init
This commit is contained in:
commit
3d0033c8e0
8
Dockerfile
Normal file
8
Dockerfile
Normal file
@ -0,0 +1,8 @@
|
||||
# 使用官方 nginx 镜像作为基础镜像
|
||||
FROM nginx:alpine
|
||||
|
||||
# 将当前目录下的 index.html 复制到 nginx 的默认网页目录
|
||||
COPY index.html /usr/share/nginx/html/
|
||||
|
||||
# 暴露 80 端口
|
||||
EXPOSE 80
|
55
README.md
Normal file
55
README.md
Normal file
@ -0,0 +1,55 @@
|
||||
# TCP 缓冲区计算器
|
||||
|
||||
一个简单的网页工具,用于计算 TCP 缓冲区大小和带宽延迟积(BDP)。
|
||||
|
||||
## 功能特点
|
||||
|
||||
- 计算带宽延迟积(BDP)
|
||||
- 提供推荐的 TCP 缓冲区设置
|
||||
- 支持 Mbps 带宽输入
|
||||
- 支持毫秒级 RTT 输入
|
||||
- 提供 Docker 容器部署支持
|
||||
|
||||
## 快速开始
|
||||
|
||||
### Docker 部署
|
||||
|
||||
```shell
|
||||
#拉取镜像
|
||||
docker pull mereith/tcp-cal:latest
|
||||
#运行容器
|
||||
docker run -d -p 80:80 mereith/tcp-cal:latest
|
||||
```
|
||||
|
||||
访问 `http://localhost:80` 即可使用计算器。
|
||||
|
||||
### 手动部署
|
||||
|
||||
直接将 `index.html` 文件部署到任何 Web 服务器即可。
|
||||
|
||||
## 使用方法
|
||||
|
||||
1. 输入带宽(单位:Mbps)
|
||||
2. 输入 RTT(单位:毫秒)
|
||||
3. 点击"计算"按钮
|
||||
4. 查看计算结果和建议的 TCP 缓冲区设置
|
||||
|
||||
## 构建说明
|
||||
|
||||
项目包含 Docker 构建脚本,可以使用以下命令构建并推送镜像:
|
||||
|
||||
```bash
|
||||
.build.sh
|
||||
```
|
||||
|
||||
## 技术栈
|
||||
|
||||
- HTML5
|
||||
- CSS3
|
||||
- JavaScript
|
||||
- Docker
|
||||
- Nginx
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
13
build.sh
Normal file
13
build.sh
Normal file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
IMAGE=mereith/tcp-cal
|
||||
VERSION=v0.0.1
|
||||
|
||||
echo "Building Docker image: ${IMAGE}:${VERSION}"
|
||||
|
||||
docker buildx build \
|
||||
--platform linux/amd64 \
|
||||
--tag ${IMAGE}:${VERSION} \
|
||||
--tag ${IMAGE}:latest \
|
||||
--push \
|
||||
.
|
109
index.html
Normal file
109
index.html
Normal file
@ -0,0 +1,109 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>TCP缓冲区计算器</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
.calculator {
|
||||
background-color: white;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.input-group {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 200px;
|
||||
padding: 8px;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
button {
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #45a049;
|
||||
}
|
||||
|
||||
.result {
|
||||
margin-top: 20px;
|
||||
padding: 15px;
|
||||
background-color: #e8f5e9;
|
||||
border-radius: 4px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="calculator">
|
||||
<h1>TCP缓冲区计算器</h1>
|
||||
<div class="input-group">
|
||||
<label for="bandwidth">带宽 (Mbps):</label>
|
||||
<input type="number" id="bandwidth" placeholder="例如: 600">
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="rtt">RTT (毫秒):</label>
|
||||
<input type="number" id="rtt" placeholder="例如: 170">
|
||||
</div>
|
||||
<button onclick="calculateBDP()">计算</button>
|
||||
<div class="result" id="result" style="display: none;">
|
||||
<h3>计算结果:</h3>
|
||||
<p>BDP (比特) = <span id="bdpBits"></span> bits</p>
|
||||
<p>BDP (字节) = <span id="bdpBytes"></span> bytes</p>
|
||||
<h3>建议的 TCP 缓冲区设置:</h3>
|
||||
<p>net.ipv4.tcp_wmem="4096 16384 <span id="recommendedWmem"></span>"</p>
|
||||
<p>net.ipv4.tcp_rmem="4096 87380 <span id="recommendedRmem"></span>"</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function calculateBDP() {
|
||||
const bandwidth = document.getElementById('bandwidth').value;
|
||||
const rtt = document.getElementById('rtt').value;
|
||||
|
||||
// 将带宽转换为 bps (Mbps to bps)
|
||||
const bps = bandwidth * 1000000;
|
||||
// 将 RTT 转换为秒
|
||||
const rttSeconds = rtt / 1000;
|
||||
|
||||
// 计算 BDP (bits)
|
||||
const bdpBits = bps * rttSeconds;
|
||||
// 转换为字节
|
||||
const bdpBytes = Math.ceil(bdpBits / 8);
|
||||
|
||||
document.getElementById('bdpBits').textContent = bdpBits.toLocaleString();
|
||||
document.getElementById('bdpBytes').textContent = bdpBytes.toLocaleString();
|
||||
document.getElementById('recommendedWmem').textContent = bdpBytes.toLocaleString();
|
||||
document.getElementById('recommendedRmem').textContent = bdpBytes.toLocaleString();
|
||||
|
||||
document.getElementById('result').style.display = 'block';
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
x
Reference in New Issue
Block a user