zoukankan      html  css  js  c++  java
  • jmeter如何玩?

    ApacheJMeterApache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

    1. 下载JMeter
    官方网站下载最新版本: http://jmeter.apache.org/download_jmeter.cgi ,目前最新版是Apache JMeter 2.9
    使用JMeter依赖jdk,建议安装jdk 1.6版本
    Linux下安装jdk参考文章:http://www.linuxeye.com/linuxrumen/Linux-install-JDK.html
    Windowns下安装jdk同Linux下安装类似,这里就不介绍了。

    2. 启动JMeter
    这里就在win下进行,图形界面较为方便
    在目录apache-jmeter-2.9in 下可以见到一个jmeter.bat文件,双击此文件,即看到JMeter控制面板。

    3. 运行预准备
    现在来对LinuxEye进行压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取。
    1) 建立一个线程组,如下图

    为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问LinuxEye
    线程属性部分中,线程数是启动多少个线程,我这里填写的是10,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写10,那么10/10=1表示10个线程间每隔1秒钟请求网站。
    循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里测试就填写的是2.
    每次修改一个设置后,别忘记了保存一下。

    2) 设置请求服务器、压力链接等信息
    接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。
    右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:

    3) 查看运行结果
    鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:

    结果树结果,如下图:

     

    各属性如下:
    Sample:每个请求的序号
    Start Time:每个请求开始时间
    Thread Name:每个线程的名称
    Label:Http请求名称
    Sample Time:每个请求所花时间,单位毫秒
    Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
    Bytes:请求的字节数
    如果Status为叉,那很显然请求是失败了,但如果是勾,也并不能认为请求就一定完全成功了,因为还得看Bytes的字节数是否是所请求网页的正常大小值,如果不是则说明发生了丢包现象,也不是完全成功。

    在下面还有几个参数:
    样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数。
    平均:每个线程请求的平均时间
    最新样本:表示服务器响应最后一个请求的时间
    偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布(这个我不是很理解)。

    术语:
    1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“Test Plan(鼠标右击) -> 添加  ->Threads(Users) -> 线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。
    2、取样器(Sampler):可以认为所有的测试任务都由取样器承担,有很多种,如:HTTP请求。
    3、断言:对取样器返回的请求结果给出判断是否正确。
    4、monitor:它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。

     另:在使用的过程中,在我们测试的过程中,可能会遇到线程数过多时会导致内存溢出,无法创建新的线程,目前个人测试按照Jmeter4.0的默认配置,最大线程数在700左右,网上查了很多说修改Jmeter.bat文件,如下:

    set HEAP =-Xms256m -Xmx256m

    set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

    改成 

    set HEAP =-Xms256m -Xmx1024m

    set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m

     但是,4.0版本的配置根本和这个不大一样,然后尝试了很多次修改了个各种版本,结果都还是会有问题。4.0的配置就一句:   

    set HEAP=-Xms256m -Xmx256m -XX:MaxMetaspaceSize=256m

    然后我就尝试改了很多个版本,最终没法解决,当我把 -Xmx256m改成4g的时候,会发现jmeter无法启动,2g也是同样的,为什么?为什么?为什么?

    后面才看到这么个问题:

    heap最多设置为物理内存的一半,默认设置为512M.如果heap超过物理内存的一半,可能运行jmeter会慢,甚至出现内存溢出,原因java比较吃内存,占CPU。


    然后我就自己查了下本地JDK版本,fuck还真是本地32位的,重新下载了64位重新安装之后

    然后再将本地jemter.bat的配置文件,改成:set HEAP=-Xms256m -Xmx4g -XX:MaxMetaspaceSize=256m

    OK,重新启动jemter成功,将线程数设置800,正常。这个问题烦扰了我很久,现在也发表出来,让大家少走走弯路。

      

  • 相关阅读:
    [国嵌攻略][097][U-Boot新手入门]
    [国嵌攻略][070-095][Linux编程函数手册]
    自己写的切图工具(转)
    【总结整理】关于切图
    【总结整理】冯诺依曼体系结构
    【总结整理】面试需了解
    【总结整理】如何解决跨域问题
    【总结整理】WebGIS基础
    【总结整理】空间数据库基础
    【总结整理】WMS、WMTS、WFS
  • 原文地址:https://www.cnblogs.com/become/p/9052152.html
Copyright © 2011-2022 走看看