新闻详情

新闻详情

首页 / 资讯中心 / 详情

基于 JMeter 的 SSE LLM 插件:轻松进行大模型性能测试

发布时间:2026/9/28 4:37:23来源:尧图网络
基于 JMeter 的 SSE LLM 插件:轻松进行大模型性能测试
文章目录 项目背景 什么是 jmeter-sse-llm-plugin✨ 核心功能️ 快速上手1. 安装插件2. 配置 SSE-LLM Stream Sampler 典型使用场景场景一压测 GPT-4 响应速度场景二Dify 工作流性能测试场景三Claude 流式对话测试 近期更新 (v1.0.0) 最佳实践1. 变量替换动态测试不同输入2. 分步测试策略从单用户到大规模并发3. 阈值设置及时发现接口抖动4. 日志分析多维度排查问题5. JMeter 中配置插件详解6. 结果导出 Excel 两种方式 获取与反馈 结语 项目背景随着大模型LLM的快速普及性能测试成为验证系统承载能力的关键环节。然而传统的 JMeter 测试大模型接口面临两大痛点协议复杂需要处理 SSEServer-Sent Events等实时流式协议逻辑繁琐需要手动解析流式响应、计算 Token 速率等jmeter-sse-llm-plugin应运而生专为解决这些痛点而设计。 什么是 jmeter-sse-llm-plugin一个基于 Apache JMeter 的 SSE 协议插件支持主流大模型 API 格式包括OpenAI 兼容格式GPT-4, GPT-3.5 等Dify API 格式Claude API 格式Gemini API 格式插件通过 SSE 协议实时接收流式响应并提供完整的性能指标采集能力。✨ 核心功能特性说明SSE 流式接收原生支持 Server-Sent Events 协议实时接收模型响应多协议支持支持 OpenAI、Dify、Claude、Gemini 等主流格式实时指标统计Token 速率、响应时间、错误率实时监控图形化配置直观的 GUI 界面无需手写复杂的 Groovy 脚本自定义请求体支持 JSON 模板、变量替换灵活适配不同场景️ 快速上手1. 安装插件# 通过 Maven 构建mvn clean package# 将生成的 JAR 放入 JMeter 的 lib/ext 目录# 重启 JMeter 使其生效2. 配置 SSE-LLM Stream Sampler在 JMeter 测试计划中右键测试计划 - 添加 - SSE-LLM Stream Sampler (注意JMeter 界面显示为此名称)设置目标 URL如https://api.openai.com/v1/chat/completions选择 API 格式下拉菜单OpenAI/Dify/Claude/Gemini配置认证信息API Key 等设置请求体模板并启用变量替换勾选 “Enable Stream Parse” 启用流式指标统计关键点虽然 JMeter 界面显示为 “SSE-LLM Stream Sampler”但其底层 Java 类名为SseStreamSampler继承AbstractSampler两者是一一对应的。文章后文提到的SseStreamSampler类名均指代这个 JMeter Sampler。 典型使用场景场景一压测 GPT-4 响应速度目标验证GPT-4在不同并发下的Token生成速度。配置示例# Sampler配置 URL: https://api.openai.com/v1/chat/completions API Format: OpenAI Concurrent Users: 10, 50, 100 (分步测试) Payload Template: { model: gpt-4, messages: [{role: user, content: ${username}}], temperature: 0.7, stream: true } # JMeter变量准备 # 在 CSV 文件中准备不同的 username 值 # 或使用 RandomString sampler 生成动态内容 # 期望指标关注 # - TTFT (首Token延迟) 随并发是否线性增长 # - Token/sec 是否在承受范围内 # - 错误率是否保持在可接受阈值以内典型结果分析并发数Avg TTFT (ms)Avg Token/secError RateObservation10850250%基线性能50920230.5%轻微下降1001100182.1%性能瓶颈显现2002100128.5%触发阈值需优化从图中可以清晰看到并发50左右是系统的最佳平衡点超过该阈值性能呈指数级下降。这也提醒我们在规划容量时需要预留一定的安全margin。# 配置示例 URL: https://api.openai.com/v1/chat/completions Model: gpt-4 Concurrent Users: 10-100 Payload: { messages: [{role: user, content: ${username}}], temperature: 0.7 }场景二Dify 工作流性能测试目标测试Dify平台内置工作流的流式响应性能。配置示例# Sampler配置 URL: https://your-dify-instance.com/v1/run API Format: Dify Workflow ID: text-summary-workflow Payload Template: { query: ${user_input}, response_type: stream, user: ${user_id}, files: [] // 如需上传文件 } # 特殊配置 # Dify特有支持 event 类型过滤 # 可在插件配置中过滤特定事件类型如: ChatMessage, MessageDelta # 监控重点 # - 不同事件类型的响应时间差异 # - 文件上传场景下的带宽利用率 # - 工作流执行的完整耗时Dify特有指标解析Dify的SSE响应包含多种事件类型插件支持实时统计事件类型说明关注指标ChatMessage完整的消息内容事件Token总数, 响应时长MessageDelta消息增量事件流式输出的核心Token/sec, 每 delta 的 token 数ThreadStart线程开始事件连接建立时间ThreadEnd线程结束事件完整响应耗时Feedback用户反馈事件业务层面的标记实战技巧在压测Dify工作流时可以通过过滤MessageDelta事件专门监控 Token 生成的实时速率这比单纯看总响应时间更能反映模型的输出流畅度。URL: https://your-dify-instance/v1/run Workflow ID: your-workflow-id Input: {question: ${user_input}}场景三Claude 流式对话测试目标评估Claude模型的对话流畅度和Token输出速率。配置示例# Sampler配置 URL: https://api.anthropic.com/v1/messages API Format: Claude Model: claude-3-5-sonnet-20240620 Payload Template: { model: claude-3-5-sonnet-20240620, max_tokens: 1024, temperature: 0.5, stream: true, messages: [{role: user, content: ${dialogue_prompt}}] } # Claude特有特性 # - 支持 content block 的流式输出 # - 可监控每个 delta 的 token 变化 # - 特有的 stop reason 监控如: end_turn, tool_use # 关键指标 # - 每轮对话的首Token延迟 # - 连续输出的平滑度无明显卡顿 # - Token成本与速率的平衡点Claude协议细节Claude的SSE响应结构与OpenAI有所不同关键特性包括Delta 结构每个data:事件包含delta对象其中delta.text为实际的文本片段delta.stop表示是否为最后一段Content Block支持多个 content block 同时流式输出插件会对其进行拼接计算Stop Reason响应结束时的stop_reason字段end_turn,tool_use,max_tokens等可用于判断生成是否正常结束监控建议在Claude测试中重点关注Time Between Deltas指标该值越接近恒定说明模型输出的平滑度越高用户体验更好。URL: https://api.anthropic.com/v1/messages Max Tokens: 1024 Temperature: 0.5 近期更新 (v1.0.0)本次发布包含✅ 支持 OpenAI 兼容 API 格式✅ 支持 Dify API 格式✅ 支持 Claude API 格式✅ 支持 Gemini API 格式✅ SSE 协议流式解析✅ 完整的性能指标统计✅ 图形化配置面板✅ Groovy 脚本移除纯 Java 实现关键改进移除了原有的 Groovy Sampler 文件改用纯 Java 实现提升稳定性和兼容性。同时插件内置了 15 维度的实时指标监控无需手动后处理即可获取完整的性能数据。 最佳实践1. 变量替换动态测试不同输入利用 JMeter 的${}语法可以轻松实现动态测试。例如${username}测试不同用户的对话内容${prompt_content}批量测试多种场景下的模型响应通过 CSV Data Set Config 读取大规模测试数据集结合 Random String Generator 生成随机参数覆盖更多边缘情况实战技巧在SSE-LLM Stream Sampler(技术类名SseStreamSampler) 的请求体模板中使用${VARIABLE_NAME}语法自动填充无需手动修改 JSON 结构。配合 JDBC Request 或 CSV File Reading, 可实现一次配置多轮变参测试。2. 分步测试策略从单用户到大规模并发性能测试应遵循由简入繁的原则测试阶段目标关注指标阶段一单用户验证验证基本连接和响应首Token延迟 (TTFT), 连接成功率, 基础Token速率阶段二并发逐步增加发现性能瓶颈Token/sec变化趋势, TTFT随并发的增长情况, 错误率上升临界点阶段三峰值负载测试确定系统上限最大支持并发数, 尾延迟 (P99) 效应, 资源耗尽前的警告信号阶段四: 长时间稳定性验证系统稳定性内存泄漏迹象, 连接累积, 逐渐恶化的性能趋势避坑指南每个并发层级运行足够时间建议5-10分钟确保数据的显著性留出安全 margin实际生产负载建议预留 20% 性能头room注意观察 SseMetrics 中的连接计数防止连接泄漏3. 阈值设置及时发现接口抖动合理的阈值配置是测试能否及时发现问题的关键。建议阈值设置参考指标推荐阈值触发警报阈值严重阈值错误率 1% 3% 5%首Token延迟 (TTFT) 1000ms 2000ms 5000msToken速率 15 tokens/sec 10 tokens/sec 5 tokens/sec响应时长 3000ms 5000ms 10000ms实战技巧在 JMeter 的SseMetricsListenerGui中配置颜色编码的阈值警报设置SseBackendListenerClient的自动停止条件避免异常时长跑测结合过滤器仅监控MessageDelta事件类型的核心指标降噪分析4. 日志分析多维度排查问题有效的问题排查需要同时关注 JMeter 侧和模型侧的日志JMeter 日志关注点SseStreamSampler(JMeter 显示名:SSE-LLM Stream Sampler) 的INFO级别输出包含连接建立、流式数据接收状态查看jmeter.log中的WARN/ERROR定位协议解析异常监控SseBackendListenerClient的心跳日志检测连接中断原因模型侧日志关注点API 请求的完整原始日志验证请求体是否符合预期Token 生成的计数日志与 JMeter 采集的 Token 总数对比错误码和 retry 机制的日志输出确认是客户端还是服务端问题排查思路首先通过SseMetricsListenerGui定位性能瓶颈在哪个指标查看对应模型的 API 文档确认响应格式是否变更检查网络环境是否有丢包、延迟波动通过对比原始响应日志确认是解析错误还是数据传输异常5. JMeter 中配置插件详解将SSE-LLM Stream Sampler(技术类名SseStreamSampler) 集成到测试计划的完整步骤步骤 1插件安装# Maven 构建生成 JARmvn clean package# 将 target/jmeter-sse-llm-plugin-1.0.0.jar 复制至 JMeter 的 lib/ext 目录# 重启 Jmeter 使插件生效步骤 2配置面板展示将SSE-LLM Stream Sampler添加到测试计划后可以清晰看到插件的配置面板添加后很清楚看到插件的配置面板步骤 2Sampler 配置面板关键参数打开测试计划右键添加 -SSE-LLM Stream Sampler(JMeter 界面显示名称对应类名SseStreamSampler)配置面板如下参数分类关键配置说明基本设置Server Name or IP目标 API 的主机地址基本设置Protocol通常留空由 URL 决定基本设置PortAPI 服务端口如 443基本设置Path完整请求路径如/v1/chat/completions认证信息API Key直接在插件中输入或通过 HTTP Header Manager 传递认证信息Auth Type选择 Bearer Token 等请求体配置API Format下拉选择OpenAI / Dify / Claude / Gemini请求体配置Request Body TemplateJSON 模板支持${variable}变量替换请求体配置Enable Stream Parse必填开启后才会统计 Token/秒等流式指标请求体配置Timeout (s)超时时间防止连接挂起建议 60-120s步骤 3配套监控组件为获得完整监控效果建议在测试计划中添加SseBackendListenerClient后端监听器负责采集 SSE 流数据SseMetricsListenerGui可视化视图面板实时展示 Token/sec, TTFT, 错误率等JSR223 Post Processor可在采样器后添加自定义结果处理逻辑配置示例截图描述SseStreamSampler 配置面板展示了 API Format 选择、Request Body Template 输入框以及 Enable Stream Parse 选项开关。界面友好无需编写 Groovy 脚本即可完成复杂的 SSE 协议配置。6. 结果导出 Excel 两种方式测试结束后将结果导出 Excel 便于分析和报告方式一右键菜单导出最常用在 JMeter 左侧树中选中Test Plan或Thread Group点击右键选择Save Response Data或Save Sampler Data在弹出的对话框中选择Save as CSV或Save as XML使用 Excel 打开.csv文件或通过Data-From Text/CSV导入优点操作简单适合快速查看关键指标缺点大文件时可能存在性能损耗格式需二次整理方式二结果收集器导出适合大规模数据在测试计划中添加CSV Result Service或JDBC Result Collector配置输出路径和格式逗号分隔、制表符分隔等测试运行完成后结果文件将自动写入指定目录使用 Python/Pandas 等工具进行深度分析importpandasaspd dfpd.read_csv(jmeter-results.csv)# 关键分析df.groupby(合并指标).agg([mean, max, count])优点适合自动化 CI/CD 流程支持大数据量、自定义字段缺点需要一定的技术成本配置和后处理脚本方式二结果收集器导出适合大规模数据在测试计划中添加CSV Result Service或JDBC Result Collector配置输出路径和格式逗号分隔、制表符分隔等测试运行完成后结果文件将自动写入指定目录使用 Python/Pandas 等工具进行深度分析importpandasaspd dfpd.read_csv(jmeter-results.csv)# 关键分析df.groupby(合并指标).agg([mean, max, count])优点适合自动化 CI/CD 流程支持大数据量、自定义字段缺点需要一定的技术成本配置和后处理脚本实战建议日常分析选用右键菜单导出 CSV快速查看 TTFT、Token/sec 等核心指标变化项目复盘或正式报告选用CSV Result Collector结合 Python 脚本生成包含置信区间的统计图表两种方式可结合使用先用右键快速筛选异常样本再用正式导出进行深入分析 获取与反馈GitHub: https://github.com/7dgroup-ai/jmeter-sse-llm-pluginRelease: v1.0.0 (已发布可直接下载 JAR)issues: 欢迎提交 Bug 和 feature request 结语无论你是想进行大模型 API 的性能基准测试还是需要验证自己的部署环境jmeter-sse-llm-plugin都能帮你事半功能。从今天开始用 JMeter 来体检你的大模型服务吧star 仓库支持开源项目的持续发展本文由 [7dgroup-ai] 发布旨在分享 JMeter 生态中的实用工具。如有问题或建议欢迎在 GitHub Issues 中交流。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

油猴脚本实现多网站多账号一键切换:AnMe实战解析 2026/9/28 5:44:04

油猴脚本实现多网站多账号一键切换:AnMe实战解析

先说我自己的处境:去年接了个内容代运营的活儿,一个人管三个平台,每个平台配两个号。每天最崩溃的不是写稿,而是换号——退出登录、清缓存、重新走验证码,一轮下来少说五分钟。一天光折腾账号就浪费半小时,…

阅读更多 →
基于CNN+LSTM的流量识别系统:从pcap预处理到模型训练完整复现 2026/9/28 5:44:04

基于CNN+LSTM的流量识别系统:从pcap预处理到模型训练完整复现

简介:基于CNN与LSTM的流量分析识别系统完整实现,面向网络人工智能、深度学习与安全分析方向的开发者,能够实时识别正常业务流量、恶意软件流量与网络攻击流量,并对流量随时序的变化进行可视化展示。系统采用CNN提取空间特征、LSTM…

阅读更多 →
GEO生成引擎优化实战:从AI搜索流量机制到落地打法全解析 2026/9/28 5:44:03

GEO生成引擎优化实战:从AI搜索流量机制到落地打法全解析

先说个我最近的真实感受。三月份接了几家 To B 客户的项目复盘,大家碰到的痛点出奇一致:百度来的自然流量还在,但成本越来越贵;谷歌那边被 AI Overview 吞掉了一截点击;更关键的是,企业内部开始追问——当用…

阅读更多 →
AWD攻防实战:一站式多目标托管、权限维持与Flag自动化提交方案 2026/9/28 5:44:03

AWD攻防实战:一站式多目标托管、权限维持与Flag自动化提交方案

上周末打了一场四个小时的AWD,靶机一共五台,刚开局十五分钟,我已经记不清哪台加固过、哪台后门被删了、哪台flag还没提交。等比赛结束复盘,真正浪费时间的不是漏洞分析,而是这些"管理类"杂活。从那次之后我开…

阅读更多 →
避坑指南:2024培训网站建设课程怎么选才不交智商税 2026/9/28 5:44:03

避坑指南:2024培训网站建设课程怎么选才不交智商税

避坑指南:2024培训网站建设课程怎么选才不交智商税 别再对着那些千篇一律的模板网站叹气说“太丑不够用”了。如果你正打算花钱报个培训班,或者自己摸索着搞个像样的网站,这篇避坑指南能帮你省下至少三千块和三个月的时间。很多人觉得建站就是拖拽拖拽…

阅读更多 →
Shell正则表达式实战:核心语法与grep/sed/awk高频用法 2026/9/28 5:43:57

Shell正则表达式实战:核心语法与grep/sed/awk高频用法

写Shell脚本这些年,我越来越觉得正则表达式就是Shell的“文本手术刀”。很多人一提到正则就头大,觉得符号太多记不住,实际上只要抓住几个核心概念,再加上在grep、sed、awk里的实际用法,你就能解决日常开发运维里九成以…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉