JMeter

##JMeter是用来做什么的

是一个Apache的一个开源程序,一个100%的针对压力模块和功能压力测试纯Java应用,最初是专门为Web应用程序而设计 的,但是目前已经扩展到别的功能 测试。

  • 能做什么?

    用来测试动态 和 静态资源(Webservices(SOAP/REST),Web dynamic languages -PHP,JAva,ASP.NET,Files,etc.Jav)

##如何本地进行服务压力测试

  • 在lib下建一个文件夹,如tests,将所有自己用到的jar,放到这个文件夹中。

  • 将自己的测试jar放到 lib/ext下面

  • 将自己的程序依赖的jar文件夹,配置到配置文件
    user.classpath=../lib/tests

##如何分发到不同的机器进行压力测试

参考官方文档http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf

##聚合分析

Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值

#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100

Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间

Median:中位数,也就是 50% 用户的响应时间

90% Line:90% 用户的响应时间

Note:关于 50% 和 90% 并发用户数的含义,请参考下文

http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html

Min:最小响应时间

Max:最大响应时间

Error%:本次测试中出现错误的请求的数量/请求的总数

Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数

KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

###问题

####Jmeter-server启动失败:Cannot start. Unable to get local host IP address. is a loopback address

    在Windows下启动Jmeter非常顺利,转到Linux下居然启动失败。
    想起之前 遇到“/etc/hosts文件设置不对导致Jboss启动失败”, 立马把焦点指向/etc/hosts。

    果然还是这个问题,贴/etc/hosts示例:

    127.0.0.1       localhost.localdomain localhost
    10.20.10.31   higkoo.rdev.company.net higkoo

    执行命令`hostname`查看当前机器名如果当前机器名与/etc/hosts不一致 ,可手动先执行成一次`hostname yourhostname`或直接加到jmeter-server文件中(注意机器名中不要含域信息,譬如:myname.rdev.company.com。这样设置仍然启动失败)。

    由/etc/hosts文件导致启动失败的错误有:
    1
    Created remote object: UnicastServerRef [liveRef: [endpoint:[10.20.10.31:62090](local),objID:[2c639f6d:12794fca52a:-7fff, 712947915258586677]]]
    Server failed to start: java.rmi.RemoteException: Cannot start. higkoo is a loopback address.
    2
    Created remote object: UnicastServerRef [liveRef: [endpoint:[10.20.10.31:38796](local),objID:[-b0d822e:12794fee8b1:-7fff, 8314597152635832475]]]
    Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.