743 lines
14 KiB
Markdown
743 lines
14 KiB
Markdown
|
|
# 服务器部署运行指南
|
|||
|
|
|
|||
|
|
> TPS测试工具服务器部署和使用说明
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📦 打包部署包
|
|||
|
|
|
|||
|
|
### 1. 在本地打包
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /Users/kiro/IdeaProjects/contract
|
|||
|
|
|
|||
|
|
# 清理并打包(使用 fatJar 任务)
|
|||
|
|
./gradlew clean fatJar
|
|||
|
|
|
|||
|
|
# 查看生成的 jar 文件
|
|||
|
|
ls -lh build/libs/tps-test.jar
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**输出:** `build/libs/tps-test.jar` (约 25MB,包含所有依赖)
|
|||
|
|
|
|||
|
|
**注意:** 必须使用 `./gradlew fatJar` 命令打包,这样才会生成包含所有依赖的可执行jar文件。
|
|||
|
|
|
|||
|
|
### 2. 准备部署文件
|
|||
|
|
|
|||
|
|
需要上传到服务器的文件:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
部署包/
|
|||
|
|
├── tps-test.jar # 可执行jar(必需)
|
|||
|
|
└── config.toml # 链连接配置(必需)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
从本地复制配置文件:
|
|||
|
|
```bash
|
|||
|
|
# 复制配置文件到 build 目录
|
|||
|
|
cp src/main/resources/config.toml build/libs/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 上传到服务器
|
|||
|
|
|
|||
|
|
### 方法1:使用 SCP 上传
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 创建本地部署目录
|
|||
|
|
cd /Users/kiro/IdeaProjects/contract
|
|||
|
|
mkdir -p deploy
|
|||
|
|
cp build/libs/tps-test.jar deploy/
|
|||
|
|
cp src/main/resources/config.toml deploy/
|
|||
|
|
|
|||
|
|
# 2. 上传到服务器
|
|||
|
|
scp -r deploy/* root@121.196.226.157:~/tps-test/
|
|||
|
|
|
|||
|
|
# 如果需要上传到第二台服务器
|
|||
|
|
scp -r deploy/* root@8.137.93.11:~/tps-test/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方法2:使用 rsync 上传(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 自动创建目录并上传
|
|||
|
|
rsync -avz --progress \
|
|||
|
|
build/libs/tps-test.jar \
|
|||
|
|
src/main/resources/config.toml \
|
|||
|
|
root@121.196.226.157:~/tps-test/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚙️ 服务器端配置
|
|||
|
|
|
|||
|
|
### 1. SSH 登录到服务器
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
ssh root@121.196.226.157
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 检查 Java 环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查 Java 版本(需要 JDK 11+)
|
|||
|
|
java -version
|
|||
|
|
|
|||
|
|
# 如果没有安装,安装 OpenJDK
|
|||
|
|
# Ubuntu/Debian
|
|||
|
|
sudo apt update && sudo apt install -y openjdk-11-jdk
|
|||
|
|
|
|||
|
|
# CentOS/RHEL
|
|||
|
|
sudo yum install -y java-11-openjdk
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 验证文件
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd ~/tps-test
|
|||
|
|
ls -lh
|
|||
|
|
|
|||
|
|
# 应该看到:
|
|||
|
|
# tps-test.jar (约 30-40MB)
|
|||
|
|
# config.toml
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 修改配置文件(如需要)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 编辑配置文件,确保连接到本地节点
|
|||
|
|
vim config.toml
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**如果在服务器上运行,建议使用本地地址:**
|
|||
|
|
```toml
|
|||
|
|
[network]
|
|||
|
|
peers=["127.0.0.1:20200"] # 使用本地节点,延迟最低
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 运行测试
|
|||
|
|
|
|||
|
|
### 基本用法
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd ~/tps-test
|
|||
|
|
|
|||
|
|
# 查看帮助
|
|||
|
|
java -jar tps-test.jar --help
|
|||
|
|
|
|||
|
|
# 使用默认参数(100线程,10000笔交易)
|
|||
|
|
java -jar tps-test.jar -c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 命令行参数说明
|
|||
|
|
|
|||
|
|
| 参数 | 简写 | 说明 | 默认值 |
|
|||
|
|
|------|------|------|--------|
|
|||
|
|
| `--threads` | `-t` | 并发线程数 | 100 |
|
|||
|
|
| `--transactions` | `-n` | 总交易数 | 10000 |
|
|||
|
|
| `--qps` | `-q` | QPS限制,0表示不限 | 0 |
|
|||
|
|
| `--contract` | `-c` | **合约地址(必填)** | 无 |
|
|||
|
|
| `--accounts` | `-a` | 测试账户数 | 100 |
|
|||
|
|
| `--help` | `-h` | 显示帮助 | - |
|
|||
|
|
|
|||
|
|
### 常用测试场景
|
|||
|
|
|
|||
|
|
#### 场景1:快速验证(1000笔)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
java -jar tps-test.jar \
|
|||
|
|
-t 50 \
|
|||
|
|
-n 1000 \
|
|||
|
|
-c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 场景2:标准压测(10000笔)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
java -jar tps-test.jar \
|
|||
|
|
-t 100 \
|
|||
|
|
-n 10000 \
|
|||
|
|
-c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 场景3:大规模压测(50000笔)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
java -jar tps-test.jar \
|
|||
|
|
-t 200 \
|
|||
|
|
-n 50000 \
|
|||
|
|
-c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 场景4:极限压测(100000笔)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
java -jar tps-test.jar \
|
|||
|
|
-t 500 \
|
|||
|
|
-n 100000 \
|
|||
|
|
-c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 场景5:限速测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 限制 QPS 为 5000
|
|||
|
|
java -jar tps-test.jar \
|
|||
|
|
-t 100 \
|
|||
|
|
-n 50000 \
|
|||
|
|
-q 5000 \
|
|||
|
|
-c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 后台运行和日志管理
|
|||
|
|
|
|||
|
|
### 1. 后台运行测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 使用 nohup 后台运行,输出重定向到日志文件
|
|||
|
|
nohup java -jar tps-test.jar \
|
|||
|
|
-t 200 \
|
|||
|
|
-n 100000 \
|
|||
|
|
-c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4 \
|
|||
|
|
> tps_test.log 2>&1 &
|
|||
|
|
|
|||
|
|
# 查看进程
|
|||
|
|
ps aux | grep tps-test
|
|||
|
|
|
|||
|
|
# 实时查看日志
|
|||
|
|
tail -f tps_test.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 使用 screen(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 安装 screen(如果没有)
|
|||
|
|
sudo apt install screen # Ubuntu/Debian
|
|||
|
|
sudo yum install screen # CentOS/RHEL
|
|||
|
|
|
|||
|
|
# 创建新会话
|
|||
|
|
screen -S tps-test
|
|||
|
|
|
|||
|
|
# 运行测试
|
|||
|
|
java -jar tps-test.jar -t 200 -n 100000 -c 0x06ac...
|
|||
|
|
|
|||
|
|
# 断开会话(按键):Ctrl+A,然后按 D
|
|||
|
|
# 重新连接:screen -r tps-test
|
|||
|
|
# 查看所有会话:screen -ls
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 查看测试报告
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 测试完成后,会生成报告文件
|
|||
|
|
ls -lt tps_test_report_*.txt | head -5
|
|||
|
|
|
|||
|
|
# 查看最新报告
|
|||
|
|
cat $(ls -t tps_test_report_*.txt | head -1)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 批量测试脚本
|
|||
|
|
|
|||
|
|
创建一个自动化测试脚本:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建测试脚本
|
|||
|
|
cat > run_tps_tests.sh << 'EOF'
|
|||
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# TPS 自动化测试脚本
|
|||
|
|
CONTRACT="0x06ac2fe406f1ae06494946ee281d58f1c79c39e4"
|
|||
|
|
JAR="tps-test.jar"
|
|||
|
|
|
|||
|
|
echo "======================================"
|
|||
|
|
echo " FISCO BCOS TPS 自动化测试"
|
|||
|
|
echo "======================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 测试配置数组(线程数 交易数 描述)
|
|||
|
|
tests=(
|
|||
|
|
"50:5000:快速验证"
|
|||
|
|
"100:10000:基础压测"
|
|||
|
|
"200:10000:中等压测"
|
|||
|
|
"400:10000:高并发压测"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 循环执行测试
|
|||
|
|
for test in "${tests[@]}"; do
|
|||
|
|
IFS=':' read -r threads txs desc <<< "$test"
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "测试: $desc"
|
|||
|
|
echo "并发数: $threads, 交易数: $txs"
|
|||
|
|
echo "======================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
java -jar $JAR -t $threads -n $txs -c $CONTRACT
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "等待10秒后开始下一轮测试..."
|
|||
|
|
sleep 10
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "所有测试完成!"
|
|||
|
|
echo "======================================"
|
|||
|
|
|
|||
|
|
# 汇总报告
|
|||
|
|
echo ""
|
|||
|
|
echo "测试报告列表:"
|
|||
|
|
ls -lt tps_test_report_*.txt | head -10
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
# 给脚本添加执行权限
|
|||
|
|
chmod +x run_tps_tests.sh
|
|||
|
|
|
|||
|
|
# 运行自动化测试
|
|||
|
|
./run_tps_tests.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📈 分阶段找准确TPS的脚本
|
|||
|
|
|
|||
|
|
基于文档中推荐的测试方法:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cat > find_optimal_tps.sh << 'EOF'
|
|||
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# 二分法找最佳TPS脚本
|
|||
|
|
CONTRACT="0x06ac2fe406f1ae06494946ee281d58f1c79c39e4"
|
|||
|
|
JAR="tps-test.jar"
|
|||
|
|
|
|||
|
|
echo "======================================"
|
|||
|
|
echo " 寻找最佳 TPS 配置"
|
|||
|
|
echo "======================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 阶段1:基准测试
|
|||
|
|
echo "[阶段1] 基准测试(单线程)"
|
|||
|
|
java -jar $JAR -t 1 -n 100 -c $CONTRACT
|
|||
|
|
echo ""
|
|||
|
|
read -p "按 Enter 继续..."
|
|||
|
|
|
|||
|
|
# 阶段2:逐步增加并发
|
|||
|
|
threads_list=(50 100 200 400)
|
|||
|
|
|
|||
|
|
for threads in "${threads_list[@]}"; do
|
|||
|
|
echo ""
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "[阶段2] 测试 $threads 线程"
|
|||
|
|
echo "======================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
java -jar $JAR -t $threads -n 5000 -c $CONTRACT
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
read -p "成功率是否 ≥99%?(y/n): " answer
|
|||
|
|
|
|||
|
|
if [ "$answer" != "y" ]; then
|
|||
|
|
echo "成功率低于99%,建议使用上一个并发数"
|
|||
|
|
last_good=$((threads / 2))
|
|||
|
|
echo "建议最佳并发数: $last_good"
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
read -p "是否用最佳并发数运行峰值测试?(y/n): " peak_test
|
|||
|
|
|
|||
|
|
if [ "$peak_test" = "y" ]; then
|
|||
|
|
echo ""
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "[阶段3] 峰值测试"
|
|||
|
|
echo "======================================"
|
|||
|
|
echo ""
|
|||
|
|
java -jar $JAR -t $last_good -n 50000 -c $CONTRACT
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
break
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "测试完成!"
|
|||
|
|
echo "======================================"
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
chmod +x find_optimal_tps.sh
|
|||
|
|
./find_optimal_tps.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔍 监控和诊断
|
|||
|
|
|
|||
|
|
### 1. 实时监控测试进程
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 监控 CPU 和内存
|
|||
|
|
top -p $(pgrep -f tps-test.jar)
|
|||
|
|
|
|||
|
|
# 监控网络连接
|
|||
|
|
watch -n 1 'netstat -antp | grep 20200'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 查看节点日志
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看节点日志
|
|||
|
|
tail -f ~/fisco/nodes/*/node0/log/log* | grep -E "ERROR|TPS"
|
|||
|
|
|
|||
|
|
# 查看交易池状态
|
|||
|
|
cd ~/fisco/console
|
|||
|
|
bash start.sh
|
|||
|
|
# 执行:getPendingTxSize
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 系统资源监控
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 整体系统监控
|
|||
|
|
htop
|
|||
|
|
|
|||
|
|
# 磁盘 IO
|
|||
|
|
iostat -x 1
|
|||
|
|
|
|||
|
|
# 网络流量
|
|||
|
|
iftop -i eth0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ 常见问题
|
|||
|
|
|
|||
|
|
### 问题1:找不到或无法加载主类
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
Error: Could not find or load main class com.org.fisco.TPSTest
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**原因:** jar文件打包不正确,缺少依赖类
|
|||
|
|
|
|||
|
|
**解决:**
|
|||
|
|
```bash
|
|||
|
|
# 1. 必须使用 fatJar 任务打包
|
|||
|
|
cd /Users/kiro/IdeaProjects/contract
|
|||
|
|
./gradlew clean fatJar
|
|||
|
|
|
|||
|
|
# 2. 验证jar文件可以运行
|
|||
|
|
java -jar build/libs/tps-test.jar --help
|
|||
|
|
|
|||
|
|
# 3. 重新上传到服务器
|
|||
|
|
scp build/libs/tps-test.jar root@服务器IP:~/tps-test/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**注意:** 不要使用 `./gradlew build`,必须使用 `./gradlew fatJar`
|
|||
|
|
|
|||
|
|
### 问题2:找不到 config.toml
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
错误: 找不到配置文件 config.toml
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决:**
|
|||
|
|
```bash
|
|||
|
|
# 确保 config.toml 在当前目录
|
|||
|
|
cd ~/tps-test
|
|||
|
|
ls config.toml
|
|||
|
|
|
|||
|
|
# 或者从 console 复制
|
|||
|
|
cp ~/fisco/console/conf/config.toml .
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题3:连接节点失败
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
连接FISCO BCOS节点失败
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决:**
|
|||
|
|
```bash
|
|||
|
|
# 1. 检查节点是否运行
|
|||
|
|
ps aux | grep fisco-bcos
|
|||
|
|
|
|||
|
|
# 2. 检查端口是否监听
|
|||
|
|
netstat -tlnp | grep 20200
|
|||
|
|
|
|||
|
|
# 3. 测试连接
|
|||
|
|
telnet 127.0.0.1 20200
|
|||
|
|
|
|||
|
|
# 4. 修改 config.toml 使用正确的地址
|
|||
|
|
vim config.toml
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题4:内存不足
|
|||
|
|
|
|||
|
|
**错误信息:**
|
|||
|
|
```
|
|||
|
|
java.lang.OutOfMemoryError
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决:**
|
|||
|
|
```bash
|
|||
|
|
# 增加 JVM 内存
|
|||
|
|
java -Xmx4g -Xms2g -jar tps-test.jar -t 200 -n 50000 -c 0x06ac...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题5:程序卡住不动
|
|||
|
|
|
|||
|
|
**排查:**
|
|||
|
|
```bash
|
|||
|
|
# 1. 查看是否有错误日志
|
|||
|
|
tail -100 tps_test.log
|
|||
|
|
|
|||
|
|
# 2. 检查网络连接
|
|||
|
|
netstat -antp | grep 20200
|
|||
|
|
|
|||
|
|
# 3. 检查节点是否正常
|
|||
|
|
cd ~/fisco/nodes/*/node0
|
|||
|
|
tail -50 log/log*
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 最佳实践
|
|||
|
|
|
|||
|
|
### 1. 在服务器上测试的优势
|
|||
|
|
|
|||
|
|
✅ **延迟更低**:本地网络延迟通常 < 1ms
|
|||
|
|
✅ **TPS更高**:网络不是瓶颈
|
|||
|
|
✅ **结果更准**:排除网络抖动影响
|
|||
|
|
|
|||
|
|
### 2. 推荐的测试流程
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 第一步:快速验证
|
|||
|
|
java -jar tps-test.jar -t 50 -n 1000 -c 0x06ac...
|
|||
|
|
|
|||
|
|
# 第二步:基础测试
|
|||
|
|
java -jar tps-test.jar -t 100 -n 10000 -c 0x06ac...
|
|||
|
|
|
|||
|
|
# 第三步:根据成功率调整
|
|||
|
|
# 如果成功率 ≥ 99%,增加并发到 200
|
|||
|
|
# 如果成功率 < 99%,保持或降低并发
|
|||
|
|
|
|||
|
|
# 第四步:峰值测试
|
|||
|
|
java -jar tps-test.jar -t [最佳并发] -n 50000 -c 0x06ac...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 参数选择建议
|
|||
|
|
|
|||
|
|
| 节点配置 | 推荐并发数 | 推荐交易数 |
|
|||
|
|
|---------|----------|----------|
|
|||
|
|
| 2C4G | 50-100 | 10000 |
|
|||
|
|
| 4C8G | 100-200 | 50000 |
|
|||
|
|
| 8C16G | 200-500 | 100000 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 测试记录模板
|
|||
|
|
|
|||
|
|
建议每次测试记录:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建测试记录文件
|
|||
|
|
cat > test_record_$(date +%Y%m%d).md << 'EOF'
|
|||
|
|
# TPS测试记录
|
|||
|
|
|
|||
|
|
## 测试日期
|
|||
|
|
2026-02-10
|
|||
|
|
|
|||
|
|
## 测试环境
|
|||
|
|
- 服务器: 121.196.226.157
|
|||
|
|
- 节点配置: 4C8G SSD
|
|||
|
|
- enable_parallel: true
|
|||
|
|
- max_trans_num_per_block: 1000
|
|||
|
|
|
|||
|
|
## 测试结果
|
|||
|
|
|
|||
|
|
### 测试1
|
|||
|
|
- 命令: java -jar tps-test.jar -t 100 -n 10000 -c 0x06ac...
|
|||
|
|
- TPS:
|
|||
|
|
- 成功率:
|
|||
|
|
- 平均延迟:
|
|||
|
|
|
|||
|
|
### 测试2
|
|||
|
|
- 命令:
|
|||
|
|
- TPS:
|
|||
|
|
- 成功率:
|
|||
|
|
- 平均延迟:
|
|||
|
|
|
|||
|
|
## 结论
|
|||
|
|
最佳并发数:
|
|||
|
|
峰值TPS:
|
|||
|
|
|
|||
|
|
## 优化建议
|
|||
|
|
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
vim test_record_$(date +%Y%m%d).md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔄 更新部署
|
|||
|
|
|
|||
|
|
当代码有更新时:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 本地重新打包
|
|||
|
|
cd /Users/kiro/IdeaProjects/contract
|
|||
|
|
./gradlew clean fatJar
|
|||
|
|
|
|||
|
|
# 验证jar可以运行
|
|||
|
|
java -jar build/libs/tps-test.jar --help
|
|||
|
|
|
|||
|
|
# 上传到服务器(覆盖旧版本)
|
|||
|
|
scp build/libs/tps-test.jar root@121.196.226.157:~/tps-test/
|
|||
|
|
|
|||
|
|
# 服务器上重新运行测试
|
|||
|
|
ssh root@121.196.226.157
|
|||
|
|
cd ~/tps-test
|
|||
|
|
java -jar tps-test.jar -t 100 -n 10000 -c 0x06ac...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 快速命令参考
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 本地打包
|
|||
|
|
cd /Users/kiro/IdeaProjects/contract
|
|||
|
|
./gradlew clean fatJar
|
|||
|
|
|
|||
|
|
# 验证打包(本地测试)
|
|||
|
|
java -jar build/libs/tps-test.jar --help
|
|||
|
|
|
|||
|
|
# 上传到服务器
|
|||
|
|
scp build/libs/tps-test.jar src/main/resources/config.toml root@121.196.226.157:~/tps-test/
|
|||
|
|
|
|||
|
|
# SSH到服务器运行
|
|||
|
|
ssh root@121.196.226.157
|
|||
|
|
cd ~/tps-test
|
|||
|
|
|
|||
|
|
# 测试帮助
|
|||
|
|
java -jar tps-test.jar --help
|
|||
|
|
|
|||
|
|
# 运行测试
|
|||
|
|
java -jar tps-test.jar -t 100 -n 10000 -c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
|
|||
|
|
# 查看报告
|
|||
|
|
cat $(ls -t tps_test_report_*.txt | head -1)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎓 完整部署示例
|
|||
|
|
|
|||
|
|
### 从零开始的完整流程
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# ========================================
|
|||
|
|
# 第一步:在本地打包
|
|||
|
|
# ========================================
|
|||
|
|
cd /Users/kiro/IdeaProjects/contract
|
|||
|
|
|
|||
|
|
# 清理并打包
|
|||
|
|
./gradlew clean fatJar
|
|||
|
|
|
|||
|
|
# 验证jar文件
|
|||
|
|
java -jar build/libs/tps-test.jar --help
|
|||
|
|
# 应该显示帮助信息,如果报错说明打包有问题
|
|||
|
|
|
|||
|
|
|
|||
|
|
# ========================================
|
|||
|
|
# 第二步:准备部署文件
|
|||
|
|
# ========================================
|
|||
|
|
mkdir -p deploy
|
|||
|
|
cp build/libs/tps-test.jar deploy/
|
|||
|
|
cp src/main/resources/config.toml deploy/
|
|||
|
|
|
|||
|
|
# 查看文件
|
|||
|
|
ls -lh deploy/
|
|||
|
|
# 应该看到:
|
|||
|
|
# tps-test.jar (约 25MB)
|
|||
|
|
# config.toml
|
|||
|
|
|
|||
|
|
|
|||
|
|
# ========================================
|
|||
|
|
# 第三步:上传到服务器
|
|||
|
|
# ========================================
|
|||
|
|
# 方式1:使用 scp
|
|||
|
|
scp deploy/tps-test.jar deploy/config.toml root@121.196.226.157:~/tps-test/
|
|||
|
|
|
|||
|
|
# 方式2:使用 rsync(推荐)
|
|||
|
|
rsync -avz --progress deploy/* root@121.196.226.157:~/tps-test/
|
|||
|
|
|
|||
|
|
|
|||
|
|
# ========================================
|
|||
|
|
# 第四步:SSH到服务器配置
|
|||
|
|
# ========================================
|
|||
|
|
ssh root@121.196.226.157
|
|||
|
|
|
|||
|
|
# 进入目录
|
|||
|
|
cd ~/tps-test
|
|||
|
|
|
|||
|
|
# 检查文件
|
|||
|
|
ls -lh
|
|||
|
|
# 应该看到 tps-test.jar 和 config.toml
|
|||
|
|
|
|||
|
|
# 检查Java版本(需要JDK 11+)
|
|||
|
|
java -version
|
|||
|
|
|
|||
|
|
# 编辑配置文件,使用本地节点地址
|
|||
|
|
vim config.toml
|
|||
|
|
# 修改为:peers=["127.0.0.1:20200"]
|
|||
|
|
|
|||
|
|
# 测试jar文件
|
|||
|
|
java -jar tps-test.jar --help
|
|||
|
|
# 应该显示帮助信息
|
|||
|
|
|
|||
|
|
|
|||
|
|
# ========================================
|
|||
|
|
# 第五步:运行测试
|
|||
|
|
# ========================================
|
|||
|
|
|
|||
|
|
# 快速验证(1000笔)
|
|||
|
|
java -jar tps-test.jar -t 50 -n 1000 -c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
|
|||
|
|
# 如果上面的测试成功,运行正式测试
|
|||
|
|
java -jar tps-test.jar -t 100 -n 10000 -c 0x06ac2fe406f1ae06494946ee281d58f1c79c39e4
|
|||
|
|
|
|||
|
|
# 查看生成的报告
|
|||
|
|
cat $(ls -t tps_test_report_*.txt | head -1)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔍 验证清单
|
|||
|
|
|
|||
|
|
部署后请按此清单验证:
|
|||
|
|
|
|||
|
|
- [ ] jar文件大小约25MB(太小说明没打包依赖)
|
|||
|
|
- [ ] 本地能运行 `java -jar build/libs/tps-test.jar --help`
|
|||
|
|
- [ ] 服务器上能显示帮助信息
|
|||
|
|
- [ ] config.toml 配置了正确的节点地址
|
|||
|
|
- [ ] 能连接到节点(显示区块高度)
|
|||
|
|
- [ ] 测试能正常运行并生成报告
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**祝测试顺利!** 🚀
|