零基础搭建AI性能压测平台:用Locust压测推理接口
为什么需要一个AI性能压测平台
给AI推理服务做压力测试,不只是看能不能跑,还要知道多少并发下响应变慢、会不会报错。
很多朋友直接写循环发请求,结果数据不标准,不好比较。
一个专业的AI性能压测平台能自动统计QPS、平均响应时间、错误率,还能模拟真实用户行为。
本文教你用Locust快速搭一个这样的平台,全程在本地完成,零基础也能上手。
环境准备:安装Locust
Locust是开源的负载测试工具,基于Python,它的Web界面能实时看到压测数据。
- 确保系统有Python 3.6+(推荐3.8以上)。终端运行
python3 --version检查。 - 安装Locust:
pip3 install locust。如果国内网络慢,可以加国内镜像,比如pip3 install locust -i https://pypi.tuna.tsinghua.edu.cn/simple。 - 验证安装:运行
locust --version,看到版本号说明成功。
如果安装失败,多半是pip版本低或者缺少编译环境,先升级pip:pip3 install --upgrade pip。
编写压测脚本:模拟AI推理请求
以压测一个文本分类API为例,假设接口地址为 http://your-api/predict,POST请求,JSON格式。
创建一个文件 locustfile.py,写入以下内容:
from locust import HttpUser, task, between
class AIUser(HttpUser):
wait_time = between(0.5, 1.5) # 每次请求间隔0.5~1.5秒
@task
def predict(self):
payload = {"text": "今天天气真好"} # 按实际接口调整
headers = {"Content-Type": "application/json"}
self.client.post("/predict", json=payload, headers=headers)
说明:wait_time控制用户发起请求的间隔,数字越小压力越大;@task标记要执行的任务。
如果你的接口需要认证,可以在脚本里加token。
启动压测与实时监控
在终端运行(确保在当前目录有locustfile.py):
locust -f locustfile.py --host=http://your-api
--host指定被压测服务的基础地址。
然后浏览器打开 http://localhost:8089,进入Locust Web界面。
- 设置并发用户数:Number of total users 填50,Spawn rate 填5(每秒启动5个用户)。
- 点击 Start swarming 开始压测。
- 查看面板上的 RPS(每秒请求数)、Average Response Time(平均响应时间)、Failures(失败请求数)。
- 如果发现Failure增多或Response Time飙升,说明服务压力较大,需要优化。
一个技巧:先从小并发(10用户)开始,逐步增加到50、100,观察服务表现。
避坑指南与效果验证
常见报错
ConnectionError:检查URL是否正确,服务是否启动。Too many open files:系统文件描述符限制,Linux可以临时执行ulimit -n 65535提高上限。Timeout:在脚本里给post调用加参数timeout=10避免长时间等待。
效果验证
运行结束后,Locust会生成一个CSV报告(支持下载)。关键指标:
- 平均响应时间低于500ms为优秀。
- 错误率低于1%可接受。
- QPS(每秒查询数)反映实际吞吐能力。
如果需要更详细的分析,可以在脚本中添加自定义统计。
至此,你已经拥有了一个可用的AI性能压测平台。
后续可以结合Jenkins集成到CI/CD流程中,实现自动化压测。
遇到特殊问题时,回看避坑部分,基本都能解决。