#!/bin/bash
# 设置并发数
CONCURRENT=10
SUCCESS_COUNT=0
FAIL_COUNT=0
LOG_FILE="error_responses.log"
# 清空之前的日志文件
> "$LOG_FILE"
DATA_BOOKMARK='{"query":"mutation backend_add_bookmark"}'
DATA_HISTORY='{"query":"mutation backend_add_history"}'
URL="https://prod-user-media-api-alb.viu.com/api/graphql/backend"
echo "开始压力测试,控制并发数为 $CONCURRENT"
echo "测试URL: $URL"
echo "按 Ctrl+C 停止测试"
echo "----------------------------------------"
make_request() {
local data=$1
local response=$(curl -s -w "%{http_code}" \
-H 'accept: application/json' \
-H 'accept-language: zh-CN,zh;q=0.9,en;q=0.8' \
-H 'authorization: Bearer xxxxxxxxxxxxxxxxx' \
-H 'content-type: application/json' \
-d "$data" \
"$URL")
# 提取状态码(最后3个字符)
local response_code=${response: -3}
# 提取响应体(除最后3个字符外的所有内容)
local response_body=${response%???}
# 根据响应码更新计数器
if [ "$response_code" = "200" ]; then
SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
else
FAIL_COUNT=$((FAIL_COUNT + 1))
# 记录错误响应到日志文件
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Status: $response_code" >> "$LOG_FILE"
echo "$response_body" >> "$LOG_FILE"
fi
printf "\\r成功: %d, 失败: %d, 最新状态码: %s" "$SUCCESS_COUNT" "$FAIL_COUNT" "$response_code"
}
worker() {
while true; do
# 随机选择一个请求数据
if [ $((RANDOM % 2)) -eq 0 ]; then
make_request "$DATA_BOOKMARK"
else
make_request "$DATA_HISTORY"
fi
sleep 0.1
done
}
for ((i=1; i<=CONCURRENT; i++)); do
worker &
done
wait
版权属于:
admin
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)