`

使用JMeter的Java请求功能测试Hetty性能

 
阅读更多

1.JMeter介绍

JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。

2.启动JMeter

进入JMeter的bin目录,然后执行:

1 sudo ./jmeter.sh

3.原始的测试方法

在没有使用JMeter前,我对hetty的性能测试,都是通过自己写多线程代码去完成的,相当苦逼,相当麻烦,不过也能锻炼自己的编码能力,我先贴出比较原始的测试方法,如下:

public class RpcHessianClient {
	
        public static void main(String[] args) {
	
                String url = "http://localhost:8081/apis/hello";
	
                HessianProxyFactory factory = new HessianProxyFactory();
	
                ExecutorService es = Executors.newFixedThreadPool(10);
	
                int size = 1000000;
	
                final CountDownLatch cdl = new CountDownLatch(size);
	
                try {
	
                        long start = System.currentTimeMillis();
	
                        factory.setUser("client1");
	
                        factory.setPassword("client1");
	
                        factory.setOverloadEnabled(true);
	
                        final Hello basic = (Hello) factory.create(Hello.class,

                                        url);
	
                        for (int i = 0; i < size; i++) {

                                es.submit(new Runnable() {
	
                                        @Override

                                        public void run() {

                                                String u=basic.hello("guolei");
	
                                                //System.out.println(u);
	
                                                cdl.countDown();
	
                                        }
	
                                });

                        }
                        cdl.await();
                        long time = System.currentTimeMillis() - start;

                        System.out.println("SayHello:");

                        System.out.println("耗时:" + (double) time / 1000 + " s");
	
                        System.out.println("平均:" + ((double) time) / size +" ms");

                        System.out.println("TPS:" + (double) size / ((double) time / 1000));
	
                        // System.out.println("Hello, " + s.getMail());

                } catch (MalformedURLException e) {
	
                        e.printStackTrace();
	
                } catch (InterruptedException e) {

                        e.printStackTrace();
	
                }finally{

                        es.shutdown();
                }
        }
}

  

4.使用JMeter来进行现代化测试

我们要使用JMeter来测试hetty,由于hetty是一款基于hessian和netty的RPC产品,我们必须使用JMeter的JAVA请求功能来进行测试,Java请求是指JMeter对Java Class进行性能测试。首先我们需要编写测试用例:

1)新建JAVA工程。

2)引入ApacheJMeter_java.jar 、ApacheJMeter_core.jar以及测试所需要的jar(jar包在JMeter目录的lib/ext目录中)。

3)继承AbstractJavaSamplerClient类开始编写主业务。如下:

public class HettyTest extends AbstractJavaSamplerClient {

	private static String label = "hettyTest";

	/**
	 * 执行runTest()方法前会调用此方法,可放一些初始化代码
	 */
	public void setupTest(JavaSamplerContext arg0) {
	}

	/**
	 * JMeter测试用例入口
	 */
	public SampleResult runTest(JavaSamplerContext arg0) {
		SampleResult sr = new SampleResult();
		sr.setSampleLabel(label);
		try { // 这里调用我们要测试的java类,这里我调用的是一个Test类
			Map<String,String> map = getDefaultParameters().getArgumentsAsMap();
			sr.sampleStart(); // 记录程序执行时间,以及执行结果
			Test.execute(map.get("ip"),map.get("port"));
			sr.sampleEnd();
			sr.setSuccessful(true);
		} catch (Throwable e) {
			sr.setSamplerData(e.getMessage());
			e.printStackTrace();
			sr.setSuccessful(false); // 用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功
		} 
		return sr;
	}

	/**
	 * JMeter界面中可手工输入参数,代码里面通过此方法获取
	 */
	public Arguments getDefaultParameters() {

		Arguments args = new Arguments();
		args.addArgument("ip", "localhost");
		args.addArgument("port", "8081");
		return args;
	}

	/**
	 * 执行runTest()方法后会调用此方法.
	 */
	public void teardownTest(JavaSamplerContext arg0) {
	}

}

 

Test类是我测试逻辑,如下:

public class Test {

	public static void execute(String ip,String port) throws MalformedURLException {
		
		
		String url = "http://"+ip+":"+port+"/apis/hello";

		HessianProxyFactory factory = new HessianProxyFactory();

		factory.setUser("client1");

		factory.setPassword("client1");

		factory.setOverloadEnabled(true);

		final Hello basic = (Hello) factory.create(Hello.class, url);

		//System.out.println("SayHello:" + basic.hello("guolei"));
	}
}

 

代码中都有注释,按照注释实际操作去理解。  System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。

 

4)将项目打为jar包,放到JMeter目录下的lib/ext下(将项目依赖的jar也放到此目录)。

5)重启JMeter。

5.JMeter使用

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

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

3)再选中刚才新增的"Java请求",右键菜单->添加->监视器->聚合报告。

4)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进行性能测试实例Java请求+参数化

    JMeter进行性能测试实例Java请求+参数化

    Jmeter-Java-Sampler.rar_jmeter_jmeter java_压力测试

    在软件开发领域,性能测试是不可或缺的一环,它能确保系统在高负载下仍能保持稳定运行。Apache JMeter是一款强大的、开源的压力和负载测试工具,广泛应用于Web应用的性能评估。而Java Sampler是JMeter中的一个重要...

    使用JMeter进行性能测试

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

    JMeter性能测试脚本

    "JMeter性能测试-day02-all"可能涵盖了更深入的JMeter功能,比如逻辑控制器,它们可以控制采样器的执行顺序和条件,例如循环控制器、随机控制器等。此外,可能会介绍断言,用于验证服务器响应是否符合预期,确保测试...

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

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

    jmeter WEB性能测试自学书籍入门到精通PDF下载

    Jmeter是Apache组织开发的一款用于功能和性能测试的Java应用程序,广泛应用于Web应用的性能评估和压力测试。这本书详细介绍了Jmeter在web性能测试中的各项功能和应用场景,下面我们将深入探讨其核心知识点。 1. **...

    使用JMeter对ZK性能测试时需要安装的插件

    Version: Applicable to JMeter 2.8+(适用JMeter版本) 以下为官方说明: Prepare a simple IdGenerator For security reasons, ZK generates ID randomly. However to perform a record & reply test, it is ...

    jmeter性能测试报告.docx

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

    JMeter性能测试,完整入门篇

    ApacheJMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。运行环境为Windows10系统,...

    性能测试-Jmeter.pptx

    【性能测试-Jmeter.pptx】的培训内容涵盖了性能测试的多个重要环节,包括数据制造、性能测试方案设计、脚本执行、性能监控与调优以及编写性能测试报告。以下是对这些知识点的详细阐述: 1. **如何制造数据**: - ...

    JMeter性能测试培训.ppt

    JMeter是一款由Apache组织开发的开源、纯Java应用程序,主要用于进行功能和性能测试。它能够测试静态和动态资源的性能,包括HTTP和FTP服务器,同时也支持对任何数据库(通过JDBC)进行压力和性能测试。JMeter具有...

    jmeter压测socket请求(java请求)

    jar包直接放进 jmeter安装目录的lib/ext 下即可使用,添加java请求,老铁赶紧下!!!!

    jmeter mysql 性能测试脚本

    自己整理的mysql性能测试脚本,需要的同学,可以下载使用

    Jmeter_oracle性能测试中文手册

    《Jmeter_oracle性能测试中文手册》是一份详尽的指南,专为那些希望了解如何使用JMeter工具进行Oracle数据库性能测试的专业人士所编写。JMeter是Apache组织开发的一款强大的性能测试工具,常用于Web应用、数据库和...

    Jmeter性能测试报告模板

    ### Jmeter性能测试报告模板知识点解析 #### 一、性能测试概述 性能测试是一种软件测试类型,用于评估软件系统的性能,特别是在高负载下系统的行为。它可以帮助开发人员和测试工程师了解系统在各种条件下的表现,...

Global site tag (gtag.js) - Google Analytics