run_billing_test.sh 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. # 账单性能测试运行脚本
  3. # 用法: bash run_billing_test.sh [quick|full|compare]
  4. set -e
  5. BASE_URL="${BASE_URL:-https://aigc-api.wangxunai.com}"
  6. JMETER="${JMETER_HOME:-jmeter}"
  7. TIMESTAMP=$(date +%Y%m%d_%H%M%S)
  8. RESULTS_DIR="results"
  9. mkdir -p "$RESULTS_DIR"
  10. case "${1:-quick}" in
  11. # 快速验证:20并发,5分钟,验证优化是否生效
  12. quick)
  13. echo "=== 快速验证测试:20并发 / 5分钟 ==="
  14. "$JMETER" -n \
  15. -t billing_perf_test.jmx \
  16. -Jbase_url="$BASE_URL" \
  17. -Jthread_count=20 \
  18. -Jramp_up=30 \
  19. -Jduration=300 \
  20. -l "$RESULTS_DIR/billing_quick_${TIMESTAMP}.jtl" \
  21. -e -o "$RESULTS_DIR/billing_quick_report_${TIMESTAMP}/"
  22. echo "报告: $RESULTS_DIR/billing_quick_report_${TIMESTAMP}/index.html"
  23. ;;
  24. # 完整测试:50并发,15分钟
  25. full)
  26. echo "=== 完整性能测试:50并发 / 15分钟 ==="
  27. "$JMETER" -n \
  28. -t billing_perf_test.jmx \
  29. -Jbase_url="$BASE_URL" \
  30. -Jthread_count=50 \
  31. -Jramp_up=60 \
  32. -Jduration=900 \
  33. -l "$RESULTS_DIR/billing_full_${TIMESTAMP}.jtl" \
  34. -e -o "$RESULTS_DIR/billing_full_report_${TIMESTAMP}/"
  35. echo "报告: $RESULTS_DIR/billing_full_report_${TIMESTAMP}/index.html"
  36. ;;
  37. # 对比测试说明
  38. compare)
  39. echo "=== 对比测试说明 ==="
  40. echo "1. 先切换到优化前的代码(git stash 或 git checkout 旧版本)"
  41. echo "2. 运行: bash run_billing_test.sh quick"
  42. echo "3. 记录结果目录名"
  43. echo "4. 切换回优化后的代码"
  44. echo "5. 再次运行: bash run_billing_test.sh quick"
  45. echo "6. 对比两次报告中的 P95、TPS、错误率"
  46. echo ""
  47. echo "重点关注指标:"
  48. echo " - GET /api/billing/records P95(预期从 800ms 降到 200ms 以内)"
  49. echo " - GET /api/billing/summary P95(预期从 500ms 降到 150ms 以内)"
  50. echo " - GET /api/billing/balance P95(预期从 300ms 降到 150ms 以内)"
  51. echo " - POST /api/llm/chat(stream) 错误率(预期从有错误降到 0)"
  52. ;;
  53. *)
  54. echo "用法: bash run_billing_test.sh [quick|full|compare]"
  55. exit 1
  56. ;;
  57. esac