使用JMeter对异步HTTP / REST服务进行压力/负载测试
尽管我一直在使用JMeter进行Web应用程序的压力测试和负载测试好几次,但我们还是花了一些时间才弄清楚如何使用该工具测试基于异步HTTP / REST的服务。 在我们这里,我是指一名程序员, Holger Staudacher ,我很荣幸能与当前的一个项目一起工作。
当Holger基于对上述项目进行功能和集成测试的经验而开发了Restfuse时 ,我们决定使用JMeter
进行压力和负载测试。 被测软件的主要服务处理上传到特定URL的数据结构。 如果上传过程成功,则返回指向包含处理结果的资源的URL。 产生的资源无法立即使用-处理需要一段时间。 因此,轮询可用于在资源可用时检索资源1 。
我们的目标是在一次测试中测量上载数据结构,处理数据和下载结果资源所花费的时间。 同时运行多个用户的这种测试应该使我们对系统的吞吐量能力有一个良好的印象。 听起来不太复杂,但是…
…使用JMeter
机载功能为上一段中描述的场景编写测试计划的第一种方法效果不佳。 计划既不可理解,也不是(更糟的是)使测量结果毫无意义。 特别是将上载请求和轮询循环与事务控制器一起钳制似乎对计时器产生了一些意外的副作用。 因此,经过一段时间的Google额外研究之后,我偶然发现了JavaSamplerClient API ,这是我以前所不知道的。
stackoverflow.com上有一个条目,描述了如何扩展AbstractJavaSamplerClient ( JavaSamplerClient
的实现)并在JMeter
使用它。 因此,这就是解决我们的问题的方法。 我们创建了AbstractJavaSamplerClient
的扩展,以覆盖runTest(JavaSamplerContext)
。 在该方法中,我们使用HttpClient执行上载和轮询请求。 一旦轮询请求成功检索到处理结果,所有标头和内容信息都将存储在SampleResult
实例中。 后者由覆盖的测试采样器方法返回,由JMeter
进行进一步处理–非常简单2 。
创建包含自定义JavaSampleClient
的jar并将其放入JMeter
安装目录下的lib/ext/
文件夹后,可以将Sampler
类型的Java Request
添加到Thread Group
。 这使您可以选择和配置自定义采样器,如下图所示:
使用JavaSamplerClient
使我们的测试计划变得非常简单,并允许我们使用通用的JMeter
结果测量功能,如下图所示,在Graph Results
视图中:
当然,测量结果现在是合理的……
由于我们不得不花很长时间才能做到这一点,所以我认为我们的解决方案也可能对其他人很感兴趣-这就是写这篇文章的原因。 但是,如果有我们没有注意到的更简单的解决方案,也很高兴收到您的来信。 因此欢迎提供反馈
- 我们开始使用网络挂接 ,但我们的客户有问题,说服IT管理员打开防火墙... ↩
- 为了使本文的篇幅合理,我跳过了关于如何处理不成功请求的任何描述,但是我们的大多数实施工作都必须在该领域中完成…… ↩
参考:来自Code Affine博客的JCG合作伙伴 Frank Appel的JMeter对异步HTTP / REST服务进行压力/负载测试 。
翻译自: https://www.javacodegeeks.com/2012/11/stressload-testing-of-asynchronous-httprest-services-with-jmeter.html
使用JMeter对异步HTTP / REST服务进行压力/负载测试相关推荐
- jmeter异步请求测试_使用JMeter对异步HTTP / REST服务进行压力/负载测试
jmeter异步请求测试 尽管我一直在使用JMeter进行Web应用程序的压力测试和负载测试好几次,但我们还是花了一些时间才弄清楚如何使用该工具测试基于异步HTTP / REST的服务. 对我们来说, ...
- 在ASP.NET Core微服务架构下使用数据库切分和扩展, 并用JMeter进行负载测试
原文链接:https://itnext.io/how-to-scale-an-asp-net-core-microservice-and-sharded-database-load-test-with ...
- Java笔记(十七) 异步任务执行服务
异步任务执行服务 一.基本原理和概念 一)基本接口 1)Runnable和Callable:表示要执行的异步任务. 2)Executor和ExecutorService:表示执行服务. 3)Futur ...
- 异步调用Web服务方法
基于Ajax技术构建的门户是web 2.0这一代中最为成功的Web应用程序.而这块市场上iGoogle和Pageflakes这两大站点已经走在了时代的前列. 当你打开Pageflakes,将会看到如下 ...
- 性能测试——JMeter脚本录制和HTTP负载测试
实验目的 (1)了解Jmeter性能测试工具的用途和简单的操作: (2)掌握Jmeter性能测试工具测试过程: (3)能够使用Jmeter进行负载测试: 实验步骤 使用Jmeter对MercuryTo ...
- 微服务模式下API测试
来自茹炳晟 session和cookie的区别 如果后端工程师使用 session 记录使用者登入信息,那么后端通常会传一个 session ID 给前端.之后,前端在发给后端的 requests 的 ...
- 微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理
微服务架构的实现首先需要提供一些基础组件,这些基础的功能性组件主要包括服务之间的通信.面向事件驱动的架构设计方法.负载均衡.服务路由.API网关和分布式配置中心等,我们对这六大基本组件进行初步的分析定 ...
- 架构之美【kubernetes、Prometheus、微服务、LVS负载均衡】
kubernetes kubernetes,简称K8s,是用8代替8个字符"ub ...
- 微服务架构实战第十节 微服务的模拟组件测试和契约服务测试
32 测试方案:如何正确理解针对微服务的测试解决方案? 作为整个课程最后一部分内容,我们将讨论微服务架构中的测试解决方案.对于微服务而言,测试是一个难点,也是经常被忽略的一套技术体系.当系统中存在多个 ...
最新文章
- tensorflow1.14.0 包含了1.x和2.x内容,此后版本要求兼容该版本
- 清华大学史作强副教授专访:用流形、偏微分方程揭秘人工智能
- 【Scratch】青少年蓝桥杯_每日一题_8.17_报数
- c# 命名空间命名规范_C#中的命名空间
- android竖直和横向,如何在android中为纵向和横向模式定义不同的控件
- 揭秘淘宝286亿海量图片存储与处理架构,互联网营销
- Leetcode算法题(C语言)16--有效的字母异位词
- MySQL进阶操作之视图
- tidb 架构~tidb 理论学习(1)
- ubuntu日常使用指南
- Linux 运维工程师学习成长路线上要经历哪四个阶段?
- CDN实战:访问苹果开发者网站太慢、访问github太慢
- 【MATLAB教程案例11~20总结】优化类算法matlab仿真经验和技巧总结
- 虾皮台湾店标价是用台币吗?要如何定价?
- java.lang.IllegalStateException: stream has already been operated upon or closed
- 面对满天繁星似的知识.如何做到老虎吃天
- imx6ul rtc 驱动修改
- solr4.3 solrconfig.xml配置文件
- 在树莓派(Linux)上使用FTDI的usb转串口芯片ft232两种驱动方式(VCP和D2xx)
- 面试 java -----Socket编程
热门文章
- DevExperience(1712)
- intro to JNDI
- 重新学习Spring一--Spring在web项目中的启动过程
- idea快速生成crud_Java / Spring:如何快速生成完整的Swagger文档CRUD REST API
- netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类
- gradle排除依赖_如何从Gradle中的所有依赖项中排除库
- input发送a.jax_Java REST JAX-RS 2.0 –如何处理日期,时间和时间戳记数据类型
- java iterable_太糟糕了,Java 8没有Iterable.stream()
- 使用var,Lombok和Fluxtion轻松处理事件
- Java将列表转换为数组,反之亦然