#!/bin/bash # 账单性能测试运行脚本 # 用法: bash run_billing_test.sh [quick|full|compare] set -e BASE_URL="${BASE_URL:-https://aigc-api.wangxunai.com}" JMETER="${JMETER_HOME:-jmeter}" TIMESTAMP=$(date +%Y%m%d_%H%M%S) RESULTS_DIR="results" mkdir -p "$RESULTS_DIR" case "${1:-quick}" in # 快速验证:20并发,5分钟,验证优化是否生效 quick) echo "=== 快速验证测试:20并发 / 5分钟 ===" "$JMETER" -n \ -t billing_perf_test.jmx \ -Jbase_url="$BASE_URL" \ -Jthread_count=20 \ -Jramp_up=30 \ -Jduration=300 \ -l "$RESULTS_DIR/billing_quick_${TIMESTAMP}.jtl" \ -e -o "$RESULTS_DIR/billing_quick_report_${TIMESTAMP}/" echo "报告: $RESULTS_DIR/billing_quick_report_${TIMESTAMP}/index.html" ;; # 完整测试:50并发,15分钟 full) echo "=== 完整性能测试:50并发 / 15分钟 ===" "$JMETER" -n \ -t billing_perf_test.jmx \ -Jbase_url="$BASE_URL" \ -Jthread_count=50 \ -Jramp_up=60 \ -Jduration=900 \ -l "$RESULTS_DIR/billing_full_${TIMESTAMP}.jtl" \ -e -o "$RESULTS_DIR/billing_full_report_${TIMESTAMP}/" echo "报告: $RESULTS_DIR/billing_full_report_${TIMESTAMP}/index.html" ;; # 对比测试说明 compare) echo "=== 对比测试说明 ===" echo "1. 先切换到优化前的代码(git stash 或 git checkout 旧版本)" echo "2. 运行: bash run_billing_test.sh quick" echo "3. 记录结果目录名" echo "4. 切换回优化后的代码" echo "5. 再次运行: bash run_billing_test.sh quick" echo "6. 对比两次报告中的 P95、TPS、错误率" echo "" echo "重点关注指标:" echo " - GET /api/billing/records P95(预期从 800ms 降到 200ms 以内)" echo " - GET /api/billing/summary P95(预期从 500ms 降到 150ms 以内)" echo " - GET /api/billing/balance P95(预期从 300ms 降到 150ms 以内)" echo " - POST /api/llm/chat(stream) 错误率(预期从有错误降到 0)" ;; *) echo "用法: bash run_billing_test.sh [quick|full|compare]" exit 1 ;; esac