`
fwuwen
  • 浏览: 16332 次
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论

使用JMeter测试solr请求

 
阅读更多

一.安装JMeter

    在官网http://jmeter.apache.org/download_jmeter.cgi下载JMeter

    直接解压JMeter安装包

    Linux下运行 $JMETER_HOME/bin/jmeter.sh

    Windows下运行  $JMETER_HOME /bin/jmeter.bat 启动图形界面

 

二.编写JMeter测试类

    1.在Eclipse中建立java工程,加入jmeter的一些基础包ApacheJMeter_core.jar,ApacheJMeter_java.jar,这两个jar包在$JMETER/lib/ext下面.同时为了方便调试,还需要加入一些日志包,avalon-framework-4.1.4.jar,commons-logging-1.1.1.jar,jorphan.jar,logkit-2.0.jar,加入之后具有如下的包结构:

     

 

    2.新建SolrJmeterTest类,并继承AbstractJavaSamplerClient

    

package test.solr;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

/** 
 * 使用Jmeter测试solr请求
 *
 * @author wuwen
 * @date Feb 17, 2013 10:30:55 AM 
 * 
 */
public class SolrJmeterTest extends AbstractJavaSamplerClient {

	private static String label = "SolrRequest";	// 定义label名称,显示在jmeter的窗口
	
	private	SolrRequest solrRequest;
	/**
	 * 定义测试初始值,setupTest只在测试开始前使用,类似于LoadRunner中的init方法
	 */
	@Override
	public void setupTest(JavaSamplerContext context) {
		super.setupTest(context);
	//	System.out.println("setupTest.....");		
		String url = context.getParameter("url");	// 获取Jmeter中设置的外界参数
		solrRequest = SolrRequest.getInstance(url);
	}
	
	/**
	 * 参数定义,也可以直接在Jmeter界面手工输入参数
	 * 代码里面可以通过Map<String, String> map = getDefaultParameters().getArgumentsAsMap()获取相关值
	 */
	@Override
	public Arguments getDefaultParameters() {
		Arguments arg = new Arguments();
		arg.addArgument("url", "http://172.16.19.68:5631/solr/zw");
		arg.addArgument("q", "${q}");
		return arg;
	}
	
	/**
	 * 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法
	 */
	@Override
	public SampleResult runTest(JavaSamplerContext context) {
	//	System.out.println("runTest.....");			// System.out的输出会显示在启动的Jmeter命令窗口内,输出过多会影响性能的准确性
		SampleResult results = new SampleResult();	// SampleResult封装了所有测试结果(如:测试是否成功,程序执行时间等)
		results.setSampleLabel(label);
		boolean success = true;
		results.sampleStart();						// 定义一个事务,表示这是事务的起始点,类似于LoadRunner的lr.start_transaction
		try {
			/** 这里就是需要测试的代码 */
			solrRequest.query(context.getParameter("q"));	// 调用solr请求
		} catch (Exception e) {
			e.printStackTrace();
			success = false;	
		} finally {
			results.sampleEnd();					// 定义一个事务,表示这是事务的结束点,类似于LoadRunner的lr.end_transaction
			results.setSuccessful(success);			// false表示失败
		}	
		
		return results;
	}

	/**
	 * 结束方法,实际运行每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法
	 */
	@Override
	public void teardownTest(JavaSamplerContext context) {
		super.teardownTest(context);
	//	System.out.println("teardownTest.....");
	}
	
	public static void main(String[] args) {
		SolrJmeterTest jt = new SolrJmeterTest();
		JavaSamplerContext context = new JavaSamplerContext(jt.getDefaultParameters());
		// 初始值执行
		jt.setupTest(context);
		// 执行部分调用
		jt.runTest(context);
		// 执行结束处理
		jt.teardownTest(context);
	}
}

       3.将工程打包成jar,放到$JMETER_HOME/lib/ext目录下面

 

       4.启动JMeter

 

三.运行JMeter

       1.添加线程组,选中主界面左侧的“测试计划”,右键菜单->添加->Threads(Users)->线程组

        

       线程组面板设置说明:

       

       2.添加java请求,选中刚才新增的"线程组",右键菜单->添加->Sampler->Java请求

       

       java请求面板说明:

       

       在类名称中选择之前打包的jar里面的类即可

       3.添加动态参数(CSV Data Set Config设置),选中刚才新增的"JAVA请求",右键菜单->添加->配置元件>CSV Data Set Config

      

      参数设置说明:

      

      Filename:文件名,指保存信息的文件目录,可以相对或者绝对路径(比如:D:\word.txt)

      File Encoding --- 文件编码

      Variable Names:参数名称(如:有几个参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,分隔符在下面的“Delimitet”中定义,为了和文件中的“,”对于,这里也用“,”分割每个参数名,(比如:use,password)

      Delimitet:定义分隔符,如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t

      Recycle on EOF? --- True=当读取文件到结尾时,再重头读取文件

                                        False=当读取文件到结尾时,停止读取文件
     Stop thread on EOF? --- 当Recycle on EOF?一项为False时起效;True=当读取文件到结尾时,停止进程

      4.结果监听,选中刚才新增的"Java请求",右键菜单->添加->监视器->聚合报告

      5.保存测试用例之后,Ctrl + R,开始运行, Ctrl + E,清除历史结果。

      6.查看测试结果:

      聚合报告中基本已经包含我们所关心的几个数据了:

      Samples -- 本次场景中一共完成了多少个Transaction

      Average -- 平均响应时间

      Median -- 统计意义上面的响应时间的中值

      90% Line -- 所有transaction中90%的transaction的响应时间都小于xx

      Min -- 最小响应时间

      Max -- 最大响应时间

      PS: 以上时间的单位均为ms

      Error -- 出错率

      Troughput -- 吞吐量,单位:transaction/sec

      KB/sec -- 以流量做衡量的吞吐量

分享到:
评论

相关推荐

    使用Jmeter测试java请求

    总的来说,使用JMeter测试Java请求是性能测试中常见且重要的任务,它能帮助开发者识别和优化Java服务的性能问题,确保在高负载下仍能提供稳定的服务。在实际操作中,可能还需要结合其他工具和方法,如日志分析、监控...

    jmeter测试dubbo请求

    而当我们谈论"jmeter测试dubbo请求"时,这意味着我们要利用JMeter对基于Dubbo框架的服务进行压力和负载测试。 Dubbo是阿里巴巴提供的一款高性能、轻量级的Java RPC框架,它使得服务调用变得简单,能有效提升分布式...

    使用JMeter测试Web应用

    使用JMeter测试Web应用 JMeter是一个功能强大的测试工具,专门用于测试Web应用的性能和可靠性。以下是使用JMeter测试Web应用的知识点: 一、安装和启动JMeter * 下载JMeter的release版本,并将其解压缩到指定目录...

    用Jmeter测试RabbitMQ

    ### 使用JMeter测试RabbitMQ的关键知识点 #### 一、JMeter与RabbitMQ集成概述 JMeter是一款广泛使用的开源性能测试工具,主要用于Web应用的压力测试。然而,它同样能够扩展到其他领域,如消息队列系统。RabbitMQ...

    使用jmeter测试数据库

    "使用 JMeter 测试数据库" JMeter 是一款功能强大且流行的性能测试工具,广泛应用于测试 Web 应用程序、数据库等系统的性能。下面,我们将通过一个简单的例子,演示如何使用 JMeter 测试数据库的性能。 JMeter ...

    使用jmeter做ws压力测试

    总结来说,"使用jmeter做ws压力测试"涵盖了JMeter的使用方法,从配置请求到设定压力测试参数,再到结果分析和性能优化,是一篇深入浅出的教程。对于开发者和测试人员来说,理解并掌握这些知识点对于提升Web服务的...

    Jmeter测试实验报告.docx

    7. **逻辑控制器(Logic Controller)**:逻辑控制器允许自定义JMeter发送请求的顺序和条件,实现更复杂的测试逻辑。 8. **配置元件(Config Element)**:配置元件提供Sampler所需的配置信息,可以动态修改请求...

    jmeter5.0 解决请求参数中文乱码ApacheJMeter_http.jar

    在这个场景下,我们关注的是如何解决在使用JMeter 5.0版本时遇到的请求参数中文乱码问题。 首先,中文乱码问题通常是由于字符编码不一致导致的。在HTTP请求中,如果服务器和客户端对字符编码的理解不同,就可能导致...

    JMeter beanShell修改http请求参数

    首先,BeanShell是JMeter内置的一个脚本引擎,允许用户使用类似Java语法的脚本来处理测试逻辑。在我们的例子中,主要涉及以下三个关键步骤: 1. **引入加密函数**: 在JMeter测试计划中,自定义加密函数通常需要...

    JMeter测试教程文档PDF

    总的来说,了解HTTP协议和使用工具如Chrome开发者工具进行网络请求跟踪,对于理解JMeter测试和优化Web应用性能至关重要。JMeter教程文档PDF将深入讲解如何利用这款工具进行有效的性能测试,包括设置参数、构建测试...

    jmeter4.0进行微信小程序测试报告(jmeter性能测试教程)

    《使用JMeter 4.0进行微信小程序性能测试详解》 微信小程序的广泛使用使得其性能测试变得至关重要,本文将详细介绍如何使用JMeter 4.0这一强大的性能测试工具对微信小程序进行压力测试。JMeter是一款由Apache开发的...

    JMeter性能测试脚本

    最后,"JMeter性能测试-day07-all"可能涉及高级话题,如脚本录制与回放、JMeter插件的使用,以及性能测试的最佳实践。JMeter的代理服务器功能可以方便地录制用户操作,生成测试脚本。而丰富的插件库则扩展了JMeter的...

    sentinel+jmeter+测试请求

    "sentinel+jmeter+测试请求" 的主题意味着我们要将 Sentinel 的流量控制功能与 JMeter 的性能测试能力结合,来评估和优化微服务的性能表现。 集成 Sentinel 和 JMeter 的过程通常包括以下步骤: 1. **配置 ...

    使用JMeter进行性能测试

    【使用JMeter进行性能测试】 性能测试是评估软件系统在高负载或大数据量下的稳定性和效率的关键步骤。Apache JMeter是一款强大的、开放源代码的性能测试工具,适用于Web应用、FTP服务器、数据库和其他通用协议。它...

    jmeter性能测试报告.docx

    JMeter是一款广泛使用的开源性能测试工具,适用于模拟多种负载条件,进行负载测试、压力测试、并发测试和容量测试,以验证系统的性能表现。 1.1 性能测试概念 性能测试包括负载测试和压力测试,前者用于了解系统在...

    JMETER 测试webservice 接口文档,内附JMETER3.0 安装包

    在本资源中,你将获得关于如何使用JMeter 3.0来测试Web服务接口的详细文档,这将帮助你评估接口的稳定性和性能。 一、JMeter 3.0安装步骤 1. 下载:首先,你需要从Apache官网下载JMeter 3.0的安装包,确保下载的是...

Global site tag (gtag.js) - Google Analytics