使用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视图中:

当然,测量结果现在是合理的……

由于我们不得不花很长时间才能做到这一点,所以我认为我们的解决方案也可能对其他人很感兴趣-这就是写这篇文章的原因。 但是,如果有我们没有注意到的更简单的解决方案,也很高兴收到您的来信。 因此欢迎提供反馈

  1. 我们开始使用网络挂接 ,但我们的客户有问题,说服IT管理员打开防火墙... ↩
  2. 为了使本文的篇幅合理,我跳过了关于如何处理不成功请求的任何描述,但是我们的大多数实施工作都必须在该领域中完成…… ↩


参考:来自Code Affine博客的JCG合作伙伴 Frank Appel的JMeter对异步HTTP / REST服务进行压力/负载测试 。

翻译自: https://www.javacodegeeks.com/2012/11/stressload-testing-of-asynchronous-httprest-services-with-jmeter.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web前端学习之ruby标记和rt/rp标记

ruby 标记定义ruby注释(中文注音或字符)。ruby标记与rt标记一同使用。ruby标记由一个或多个字符(需要一个解释/发音)和一个提供该信息的rt 标记组成,还包括可选的rp标记,定义当浏览器不支持ruby 标记时显示…

作为一名程序员,聊聊我们的现状和未来

前言:互联网这个高速发展的新兴行业,注定是敢想敢干敢创新,耐劳耐操耐折腾年轻人的天下? 我们所在的互联网行业,不断地有新的公司冒出,有新的商业模式成形,有新的产品形态影响着大家的生活日常&…

ubuntu dhcp ping 不通 自己_??2、DHCP安装和配置

DHCP动态主机设置协议,是一个局域网的网络协议,使用UDP协议工作,可以快速分配IP地址,解决内网IP不足、手动配置IP造成IP冲突以及内网机器多手工配置比较麻烦的问题。1.把win2008和win2003设置同一网段,网络适配器—配置…

选择您的Java EE 6应用服务器

我被问到的第一个问题是:“我们应该使用哪个Java EE应用服务器?”。 随着Java EE 6的日益普及,新的兼容应用程序服务器获得了认证。 当前的官方兼容性和认证矩阵列出了针对完全配置文件,Web配置文件或两者认证的12种不同产品。 如…

HTML表格属性及简单实例

这里主要总结记录下表格的一些属性和简单的样式&#xff0c;方便以后不时之需。 1、<table> 用来定义HTML的表格&#xff0c;具有本地属性 border 表示边框&#xff0c;border属性的值必须为1或空字符串("")。该属性不会控制边框的样式&#xff0c;而是由CSS来…

linux mysql启动_MySQL 安装(二)

MySQL 安装所有平台的Mysql下载地址为&#xff1a;MySQL 下载 . 挑选你需要的 MySQL Community Server 版本及对应的平台。Linux/UNIX上安装MySQLLinux平台上推荐使用RPM包来安装MySQL&#xff0c;MySQL AB提供了以下RPM包的下载地址&#xff1a;MySQL - MySQL服务器。你需要该…

谁在偷你的记忆? 应用服务器版

您创建了一个了不起的应用程序。 您将其投入生产。 您会发现您没有足够的可用内存。 即使您的所有测量结果&#xff08;可能是借助我们的小型公用事业公司进行的测量 &#xff09;都表明您应该还不错。 我们计划发布一系列博客文章&#xff0c;研究堆消失的位置&#xff0c;并…

遗忘的html标签

1 <span>x</span><sup>2</sup><span> y10</span> 2 <br> 3 <span>H</span><sub>2</sub><span>O</span> <sup> 标签可定义上标文本。 包含在 <sup> 标签和其结束标签 …

mysql数据库索引页号为什么从3开始_MySQL数据库快问快答

原标题&#xff1a;MySQL数据库快问快答前言今天楼主给大家列一下关于数据库几个常见问题的要点&#xff0c;如果大家对其中的问题感兴趣&#xff0c;可以自行扩展研究。1. UNION ALL 与 UNION 的区别UNION和UNION ALL关键字都是将两个结果集合并为一个。UNION在进行表链接后会…

java arraylist排序_最全Java集合笔记

集合概述什么是集合集合框架&#xff1a;用于存储数据的容器。集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容&#xff1a;对外的接口、接口的实现和对集合运算的算法。接口&#xff1a;表示集合的抽象数据类型。接口允许我们操作…

CachedIntrospectionResults 初始化

转载于:https://www.cnblogs.com/xiluhua/p/7862985.html

为什么有些内联(行内)元素可以设置宽高?

为什么有些内联&#xff08;行内&#xff09;元素如img、input可以设置宽高&#xff1f; 在说明之前我们先来了解一些定义。 块级元素和内联元素&#xff1a; ①块级元素总是独占一行&#xff0c;表现为另起一行开始&#xff0c;而且其后的元素也必须另起一行显示。 宽度(w…

在Eclipse中高效运行HTTP / REST集成测试

最近&#xff0c;我有机会使用由我亲爱的Holger Staudacher编写的OSGi-JAX-RS-Connector库。 通过连接器&#xff0c;您可以通过将Path注释的类型注册为OSGi服务来轻松发布资源-实际上&#xff0c;它工作得很好。 对于我来说&#xff0c;使用普通的JUnit测试编写驱动的服务类测…

Eclipse安装TestNG插件

Eclipse安装TestNG插件 TestNG是什么? TestNG按照其文档的定义是&#xff1a; TestNG是一个测试框架&#xff0c;其灵感来自JUnit和NUnit的&#xff0c;但引入了一些新的功能&#xff0c;使其功能更强大&#xff0c;使用更方便。 TestNG是一个开源自动化测试框架;TestNG表示下…

basicdatasourcefactory mysql_Java基础-DBCP连接池(BasicDataSource类)详解

Java基础-DBCP连接池(BasicDataSource类)详解作者&#xff1a;尹正杰版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程&#xff0c;为了解决此类性能问题&#xff0c;通常…

生物神经网络衍生出的算法

一个生物神经网络的基本结构&#xff1a; 生物神经网络由大量神经元组成&#xff0c;这些神经元之间通过突触相互连接。神经元可以接收来自其他神经元的信号&#xff0c;并根据信号的强度和类型来调整自己的输出信号。这种神经元之间的相互连接和信号传递形成了生物神经网络的基…

echart实例数据 本地加载_JVM 类加载概述

来源&#xff1a;SegmentFault 思否社区作者&#xff1a;又坏又迷人JVM简介JVM是Java Virtual Machine(Java虚拟机)的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Ja…

高可用集群搭建

高可用集群搭建  创建hadoop账户 创建hadoop账户&#xff08;#注意&#xff0c;接下来的操作均在hadoop账户下运行&#xff09; # useradd hadoop # passwd hadoopsu - hadoopmkdir soft disk1 disk2mkdir -p disk{1,2}/dfs/{dn,nn}mkdir -p disk{1,2}/nodemgr/local 将本地目…

scrt如何切换成英文版_英文版SecureCRT显示乱码解决

英文版SecureCRT显示乱码解决系统环境&#xff1a;CentOS&#xff15;.&#xff16;以前Linux都是默认安装在英文环境下&#xff0c;用英文版的SecureCRT查看系统内容输出的也都是英文的&#xff0c;不会出现乱码问题。今天同事在服务器安装时默认选择了简体中文&#xff0c;这…

java try catch_Java捕获异常

大家好&#xff0c;欢迎来到乐字节小乐的Java技术分享园地在Java中&#xff0c;凡是可能抛出异常的语句&#xff0c;都可以用try ... catch捕获。把可能发生异常的语句放在try { ... }中&#xff0c;然后使用catch捕获对应的Exception及其子类。多catch语句可以使用多个catch语…