性能测试

本文档介绍如何使用 JMeter 对 YiAsk 系统进行性能测试。

测试目的

性能测试用于评估系统在不同并发负载下的表现,包括:

  • 响应时间 - 用户请求的处理速度
  • 吞吐量 - 系统每秒能处理的请求数
  • 并发能力 - 系统能稳定支持的最大并发用户数
  • 稳定性 - 系统在长时间压力下的表现

JMeter 安装

下载安装

  1. 下载 Apache JMeter
  2. 解压到本地目录
  3. 运行 jmeter (Linux/Mac) 或 jmeter.bat (Windows)

验证安装

启动 JMeter 后,应该能看到 GUI 界面。

压测文件

下载 YiAsk 性能测试脚本,在 JMeter 中打开该文件。

变量配置

打开测试脚本后,在 TestPlan用户定义的变量 中配置以下变量:

变量名说明默认值
BASE_URL服务器地址localhost
PORT服务器端口13000
ACCOUNT登录账号xxxxx
PASSWORD登录密码xxxxxx
SPACE_NAME空间名称default
THREAD_COUNT压测线程数20

注意:请根据实际部署环境修改以上变量值。

测试场景

测试脚本包含以下场景,可独立或组合运行:

场景1:登录

测试用户登录接口的性能,包括:

  • 登录请求
  • Token 提取

场景2A:简单问答

测试简单自然语言查询的性能,如:

  • "销售额"
  • "订单数量"
  • 等单指标查询

场景2B:复杂问答

测试复杂自然语言查询的性能,如:

  • "去年1季度销量前五的门店在今年2季度的销售额以及销量分别多少?"
  • "按地区统计销售金额"
  • 等多指标/跨维度查询

场景3:Schema 列表

测试获取语义模型列表接口的性能。

场景4:获取提示词

测试获取提示词列表接口的性能。

运行压测

单场景运行

  1. 在 JMeter 左侧树中选择要运行的场景
  2. 禁用其他场景(右键 → Disable)
  3. 点击绿色箭头按钮启动

综合压测

  1. 确保所有需要的场景都已启用
  2. 调整线程组的线程数和 Ramp-Up 时间
  3. 点击绿色箭头按钮启动

查看结果

压测过程中可查看:

  • 汇总报告 - 整体统计数据
  • 查看结果树 - 每个请求的详细信息

结果分析

关键指标说明

指标说明
# 样本总请求数
平均值平均响应时间
最小值/最大值响应时间范围
标准偏差响应时间波动程度
异常 %错误率
吞吐量每秒处理的请求数

性能评估

响应时间评级
< 200ms优秀
200ms - 1s良好
1s - 3s可接受
> 3s需要优化

寻找最大并发

通过逐步增加线程数,找到系统的"拐点":

  1. 从小并发开始(如 10 个线程)
  2. 逐步增加并发(20、50、100、200...)
  3. 观察响应时间和错误率
  4. 当出现以下情况时,前一个并发数即为最大并发:
    • 响应时间突然暴涨
    • 错误率超过 1%

服务器配置建议

并发需求CPU内存
< 204核8GB
20-508核16GB
50-10016核32GB
> 10032核+32GB+

数据库优化

  • 使用连接池
  • 适当增加数据库连接数
  • 考虑数据库索引优化