转:应用JMeter测试solr请求
使用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测试solr请求的更多相关文章
- jmeter测试HTTP请求
HTTP超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.(详情参考看一下百科) HTTP发送请求有GE ...
- jmeter测试https请求之导入证书
jmeter测试https请求 公司最近在搞全站HTTPS改造,进一步提高网站的安全性,防止运营商劫持.那么,改造完成后,所有前后端的URL将全部为https. So ,研究下怎么用Jmeter访 ...
- jmeter测试https请求
测试https请求时,需要添加证书 目录 1.下载证书 2.导入 3.执行https请求 1.下载证书 在浏览器中打开要测试的https协议的网站,以谷歌为例打开,下载证书到桌面 4.一直点击下一步 ...
- 使用Jmeter测试java请求
1.性能测试过程中,有时候开发想对JAVA代码进行性能测试,Jmeter是支持对Java请求进行性能测试,但是需要自己开发.打包好要测试的代码,就能在Java请求中对该java方法进行性能测试2.本文 ...
- 使用jMeter测试Solr服务接口
之前一直用ab做简单的服务接口测试,ab功能强悍,使用简单,但是没有生成专题图和表格等功能,因此,我们决定使用jmeter来作为我们测试工具.接下来,我们将详细介绍jmeter使用的步骤,主要包括:j ...
- Apache JMeter 测试Http请求
环境安装:JDK 下载:http://jmeter.apache.org/download_jmeter.cgi 启动: 简单HTTP请求测试
- 第二篇--Jmeter测试Java请求
前提:需要准备eclipse作为开发工具,安装jdk,准备完毕,接下来开工喽! 1.新建Java工程BMIrisJNIJarTest,新建lib目录,将Jmeter安装目录下lib/ext包下的Apa ...
- jmeter(二十二)jmeter测试Java请求
目的:对Java程序进行测试 目录 一.核心步骤 二.实例 三.JMeter Java Sampler介绍 四.自带Java Request Sampler 一.核心步骤 1.创建一个Java工程: ...
- jmeter测试http请求使用csv参数
创建参数化文件 线程组添加CSV Data Set Config配置元件 为请求添加参数 重新运行查看结果 使用随机参数(JMeter有好多函数可以使用) 查看结果发现使用随机生成的数字 3
随机推荐
- 使用Java注解开发自动生成SQL
使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...
- github本地库及clone常用命令
新建本地库 1. cd d: 2. mkdir git 3. cd git 4. git init 5. git remote add origin git@github.com:swportal/ ...
- Mysql存储过程和函数
Mysql存储过程和函数 基本概念: 创建存储过程和函数是指将经常使用的一组SQL语句的组合在一起,并将这些SQL语句当作一个整体存储在MySQL服务器中.例如,银行经常需要计算用户的利息.不同类别的 ...
- location修改的时候报错解决办法
location修改的时候直接保存record,或者转换成DbObject都会报错,这样准换之后就好了if(key.equals("location")&&valu ...
- Python基础篇-day8
本节目录1.抽象接口2.静态方法.类方法.属性方法3.类的特殊方法 3.1 __doc__ 表示类的描述信息(注释) 3.2 __module__ 和 __class__ 3.3 __init__ 构 ...
- js、jquery对节点的操作(增、删)
js对节点的操作方法 一.获取 1.父节点的获取 某节点的parentNode属性值即为该节点的父节点.示例: var parent = document.getElementById("o ...
- 设计模式 -- 责任链模式或者叫职责链模式(Chain of Responsibility(CoR))
什么是链?前后相连,一个连接下一个,其中包括多个节点,其实责任链模式也类似,他是多个对象之间相互关联,下一个对象的操作由上一个对象关联下来,上一个对象有个方法用于指向其他对象.职责链之间的前后关系是可 ...
- 第六十五,html嵌入元素
html嵌入元素 学习要点: 1.嵌入元素总汇 2.嵌入元素解析 本章主要探讨HTML5中嵌入元素,嵌入元素主要功能是把外部的一些资源插入到HTML中. 一.嵌入元素总汇 ...
- FZU 1502 Letter Deletion(DP)
Description You are given two words (each word consists of upper-case English letters). Try to delet ...
- 2016年团体程序设计天梯赛-决赛 L1-5. 是不是太胖了(5)
据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.已知市斤是公斤的两倍.现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……) 输入格式: ...