-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathtest-gin-limit.sh
More file actions
executable file
·97 lines (76 loc) · 2.14 KB
/
test-gin-limit.sh
File metadata and controls
executable file
·97 lines (76 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash
# 极限性能测试脚本
set -e
echo "=== Gin 极限性能测试 ==="
# 确保二进制文件存在
if [ ! -f "./procman-gin" ]; then
echo "Building procman-gin..."
go build -o procman-gin ./cmd/procman
fi
# 测试配置
BINARY="./procman-gin"
BASE_PORT=18300
DURATION=10
# 使用 ab (Apache Bench) 进行测试
if ! command -v ab &> /dev/null; then
echo "Installing Apache Bench..."
sudo apt-get update && sudo apt-get install -y apache2-utils
fi
# 测试函数
test_with_ab() {
local port=$1
local concurrency=$2
local requests=$3
local name=$4
echo ""
echo "测试: $name"
echo "并发数: $concurrency"
echo "总请求数: $requests"
# 启动服务器
$BINARY -port $port run &
SERVER_PID=$!
sleep 2
# 运行测试
echo "开始压力测试..."
ab -n $requests -c $concurrency -k "http://localhost:$port/" > ab_result_$port.txt 2>&1
# 提取结果
RPS=$(grep "Requests per second:" ab_result_$port.txt | awk '{print $4}')
FAILED=$(grep "Failed requests:" ab_result_$port.txt | awk '{print $3}')
TOTAL=$(grep "Complete requests:" ab_result_$port.txt | awk '{print $3}')
echo "结果:"
echo " RPS: $RPS"
echo " 成功: $TOTAL"
echo " 失败: $FAILED"
# 停止服务器
kill $SERVER_PID 2>/dev/null || true
wait $SERVER_PID 2>/dev/null || true
# 清理
rm -f ab_result_$port.txt
# 返回 RPS
echo $RPS
}
# 测试场景
echo "开始极限性能测试..."
echo "持续时间: $DURATION 秒"
echo ""
# 逐步增加并发数
SCENARIOS=(
"10:1000:轻量负载"
"50:5000:中等负载"
"100:10000:重度负载"
"200:20000:高负载"
"500:50000:极高负载"
"1000:100000:极限负载"
)
echo "测试结果:"
echo "并发数:总请求数:场景名称:RPS"
for scenario in "${SCENARIOS[@]}"; do
IFS=':' read -r concurrency requests name <<< "$scenario"
port=$((BASE_PORT++))
rps=$(test_with_ab $port $concurrency $requests "$name")
echo "$concurrency:$requests:$name:$rps"
# 短暂休息
sleep 1
done
echo ""
echo "极限测试完成!"