jmeter有本身的GUI页面,可是当线程数不少或者如今有不少的测试场景都是基于linux下进行压测,这时咱们可使用jmeter的命令行方式来执行测试,该篇文章介绍jmeter单节点命令运行方式。java
1:准备单节点linux机器,并安装jdk,即安装java环境linux
个人linux机器为:134.64.14.96,至于怎么安装java环境就不说了apache
2:上传并解压最新的jmeter包到linux服务器上,目前jmeter版本已经进入3了这里给出个人安装包云盘地址:http://pan.baidu.com/s/1bI3r2I 密码:f5llwindows
3:因为linux上面没有像windows那样直观的jmeter的gui页面使得咱们制定jmeter的jmx脚本比较费力(通常linux服务器为了性能考虑不会装图形化界面),因此jmx脚本咱们能够在本地windows机器上利用jmeter的gui页面先制做好,而后上传到服务器上去执行服务器
下面用百度请求为例:并发
在本地双击jmeter的bin目录下的jmeter.bat文件启动jmeter的gui页面,生成一个百度的接口请求jmx脚本,并在本地调试经过性能
调试经过之后,此时功能测试的脚本就生成好了,咱们在将此脚本作必定配置和修改,使其成为一个能够放在服务端跑的性能脚本测试
通常我都作两步:ui
第一步:删除-查看结果树等一切监听器 ,目的是:jmeter底层就是java写的,为减小压测时性能损耗一切不用的控件都不要放在上面,至于测试结果会有jtl文件可以统计不须要这里在添加监听器命令行
第二步:修改线程组下面的线程数和循环次数,以下面的设置能够实现:20个线程数跑3分钟的场景,修改完成进行保存该jmx文件
4:上传该性能脚本(baidu_requests_results.jmx)到linux服务器上
如我上传在了bin目录下/home/tester/apache-jmeter-3.0/bin
5:命令行运行jmeter脚本
执行命令为:
./jmeter -n -t baidu_requests_results.jmx -l baidu_requests_results.jtl
观察服务器控制台:
这样就用命令行的方式完成了jmx脚本20个线程3分钟并发的场景测试
jmeter命令行具体各项的含义为:
-h 帮助 -> 打印出有用的信息并退出 -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter -t 测试文件 -> 要运行的 JMeter 测试脚本文件 -l 日志文件 -> 记录结果的文件 -r 远程执行 -> 在Jmter.properties文件中指定的全部远程服务器 -H 代理主机 -> 设置 JMeter 使用的代理主机 -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
6:执行结果说明
一:能够看到控制台结果中打印的日志
summary + 91773 in 00:00:06 = 15787.5/s Avg: 0 Min: 0 Max: 78 Err: 91773 (100.00%) Active: 20 Started: 20 Finished: 0
解析为:
在6秒的时间内增长请求91773个,平均每秒处理15787.5个请求数目,时间单位为ms,err为错误率,这里百度请求为100%错误是由于百度自己的机制形成的,同一个ip短期并发请求百度,会拒绝请求因此才会出错,真实状况下执行本身自定义脚本能够根据错误率查看服务器是否能承受住那么大的压力,active为在线用户数,即当前有多少个用户在并发请求
二:在jmeter的bin目录下生成了一个jtl文件,该文件中收集了3分钟内全部的测试结果
throughput(每秒处理事务数)
随着活跃线程数增长响应时间曲线:
聚合报告:
对于jtl测试结果咱们能够有多种方式去查看另外性能测试对于性能结果的分析也相当重要,关于jtl测试结果查看与分析,这里请看个人jmeter系列博文之-jmeter之jtl测试报告(说明:上面的图表中错误率为100%是因为我并发压测百度,百度自己机制会拒绝短期内同一ip并发请求因此才会出错)