一、Linux环境安装jmeter

注意:如果脚本中的并发数为10,如果有1台执行机,4台调度机,那么执行的并发数为40,而不是10或者50。

如需要用到3台客户机,分别在三台机器中安装jdk、jmeter环境,以下是安装jmeter步骤

1)将jmeter安装包放到服务器

如路径:/app/jmeter

2)修改环境变量

编辑环境变量文件:vi /etc/profile

2.1)添加:export JMETER_HOME=/app/jmeter/apache-jmeter-3.3

2.2)export CLASSPATH中添加

:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
2.3)export PATH中添加:

:$JMETER_HOME/bin:$PATH:$HOME/bin

2.4)使配置文件生效,必须执行不然修改没生效:

source /etc/profile

3)检验环境

jmeter -v

出现下图则环境安装成功

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_服务器

 

 

 

 

 

二、单台机命令行运行jmeter测试脚本

为什么命令行执行:

1、图形化界面消耗更多资源,CPU和内存

2、图形化界面不支持大型的负载测试和性能测试

3、命令行测试支持持续集成,例如放到Jenkins这样的CI工具上

开始执行...

1、修改配置,关闭GUI模式

进入jmeter安装路劲/bin,修改jmeter.properties文件,注释掉以下配置

jmeter.save.saveservice.output_format=xml

2、运行

进入路径,/app/jmeter执行命令,报告文件report.jtl会在当前运行的路径下生成。

Window系统下命令行执行:

jmeter -n -t D:\performance\cue\xx平台性能测试.jmx -l report.jtl -e -o D:\performance\report

Linux系统下命令行执行:

jmeter -n -t /app/jmeter/script/xx平台性能测试脚本.jmx -l report.jtl -e -o /app/jmeter/report

参数解析:

-n:以非GUI形式运行Jmeter

-t:要运行的 JMeter 测试脚本所在路径及文件名

-l:输出结果路径,如果没有该文件就自动创建,可以生成csv或者jtl文件

-e:在脚本运行结束后生成html报告

-o:保存html报告的地址,此文件必须不存在

-h:帮助,打印出有用的信息并退出

-r:远程执行,启动远程服务

-H:代理主机,设置Jmeter使用的代理主机

-P:代理端口,设置Jmeter使用的代理主机的端口号

-J:传递动态参数搭配    duration  持续时间  threadnum  线程数  loopcount  循环次数  ramp  告知Jmeter要在多长时间内建立全部的线程,默认值为0

三、分布式执行jmeter测试脚本

选择一个调度机master:166.99.88.xx,此机器只负责调度,并汇总输错报告,不执行脚本

选择两台或多台执行机slave:600.x0.x3.xx、x00.x0.x3.00

注意这三台机器保证互通,由于机器之间只有8080端口互通的,所以需要配置端口并保证该端口没有被其他应用占用

1、slave执行机配置端口

进入jmeter安装路劲/bin,修改jmeter.properties文件

第一个:server_port=8080

第二个:server.rmi.localport=8080

2、slave执行机开启jmeter-server

进入jmeter安装路劲/bin,命令行执行:sh jmeter-server

3、master调度机上指定调度IP地址和端口

进入jmeter安装路劲/bin,修改jmeter.properties文件

修改remote_hosts,回到master机器上,修改jmeter.properties文件中的remote_hosts,将slave机器的ip地址、端口添加上去,多个ip之间用逗号隔开。其中xxx.0.0.0表示master机器本身,为了独立开master,可以将其去掉,这样就不会在master上执行测试。

如:remote_hosts=xx0.xx.xx.xx:8080,xxx.xx.x3.3x:8080

ps:这步好像没配置也没影响,因为执行时的命令会指定路径

4、分布式执行jmete测试脚本

同样进入路径,/app/jmeter执行命令,报告文件report.jtl会在当前运行的路径下生成。

jmeter -n -t /app/jmeter/script/xxx平台性能测试脚本.jmx -R xxx.xx.xx.xx:8080,xxx.xx.xx.xx:8080 -l report.jtl -e -o /app/jmeter/report

单机或分布式执行都需注意:需要重新执行脚本时,需先把已生成的报告删除,不然会出现冲突无法执行。

四、查看结果

1、查看生成的报告,report文件夹中的index.html可直接打开,即可查看执行结果

2、Jmeter.log是日志,可查看执行日志

3、Jmeter客户端中的聚合报告等监听器中浏览加载report.jtl文件,可界面中查看聚合报告等监听结果

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_服务器_02

 

 

 

 

 

五、Jmeter聚合报告中几个重要测试指标释义

 

Label

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

#Samples

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

Average

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

Median

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

90% Line

90% 用户的响应时间,其他的几个可以类推

Min

最小响应时间

Max

最大响应时间

Error%

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

Throughput

吞吐量——默认情况下表示每秒完成的请求数(Request per Second)

Received / Sent KB/Sec

每秒从服务器端接收到/发送的数据量

 

 

六、出现问题解决方法

1)出现如下远程运行后自动关闭,暂不确定什么原因,重启远程服务就好了

 

 

 

如果我们没有权限把监控的脚本放到平台的服务器上面去,只能通过nmon工具来监控cpu和内存使用情况

 

一、下载安装nmon

1、查看服务器系统版本,查找系统对应的nmon版本

cat /proc/version 

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_命令行_03

 

 

2、下载文件解压放到服务器

下载地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Downlo 

下载文件:nmon16e_mpginc.tar.gz,如附件

服务器/app中新建文件夹 nmon16e,给文件夹赋予权限sudo chmod -R 777 nmon16e,

上传压缩文件,放到该文件夹下,解压

3、加入环境变量

在nmon6d目录中,可以找到nmon_x86_64_centos6这个文件,并对它添加执行权限

chmod +x nmon_x86_64_centos6

再把该程序文件加入环境变量运行目录,如果不是管理员,需要加上sudo命令

mv nmon_x86_64_centos6 /usr/local/bin/nmon

二、实时监控

输入nmon命令启动nmon

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_响应时间_04

 

 

在上面的交互式窗口中,可以使用nmon 快捷键来显示不同的系统资源统计数据:

q : 停止并退出 Nmon

h : 查看帮助

c : 查看 CPU 统计数据

m : 查看内存统计数据

d : 查看硬盘统计数据

k : 查看内核统计数据

n : 查看网络统计数据

N : 查看 NFS 统计数据

j : 查看文件系统统计数据

t : 查看高耗进程

V : 查看虚拟内存统计数据

v : 详细模式

按下c,m,d后如下图,CPU、内存、磁盘的消耗情况都直观的展现出来了,按q键可以退出。

CPU:

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_命令行_05

 

 

内存:

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_服务器_06

 

 

三、数据采集

为了实时监控系统在一段时间内的使用情况并将结果记录下来,我们可以通过运行以下命令实现:

1) linux服务器终端,首先进入环境变量目录,使用命令记录一段时间内的监控数据,执行测试命令:

cd /usr/local/bin

./nmon -f -t -s 30 -c 180 -m /app/nmon16e/ 

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_服务器_07

 

 

-f:按标准格式输出文件:<hostname>_YYYYMMDD_HHMM.nmon;

-t:输出中包括占用率较高的进程;

-s 30:每30秒进行一次数据采集

-c 180:一共采集180次

-m 生成的数据文件的存放目录。

输入命令回车后,将在/app/nmon16e/目录生成一个hostname_timeSeries.nmon的文件,如hosname为test,生产的文件为:test_190826_1416.nmon。

2) 通过sort命令可以将nmon结果文件转换为csv文件:

# sort test_190826_1416.nmon > test_190826_1416.csv

执行完sort命令后即可在当前目录生产 test_190826_1416.csv文件。

四、查看数据

官网下载分析工具,如附件或下载地址:

https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/Power+Systems/page/nmon_analyser

nmon analyser.xls工具的使用方法如下:

(1)打开nmonanalyser.xls工具;

(2)选择启用宏

(3)点击Analyse nmondata按钮,加载之前下载的 test_190826_1416.csv文件。

(4)提示运行错误时选择[结束]  

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_响应时间_08

 

 

以下是分析结果的截图:

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_服务器_09

 

 

五、结束nmon运行

查询进程号,然后杀掉该进程以停止监控

ps -ef | grep nmon 

kill -9 31108 

六、内存分析

可参考


 

 

若时不会使用nmon,那还可以使用docker来看内存和cpu的使用里,但是只能通过截图来记录数据,因此此种方式存在误差

 

docker监控rancher服务器操作步骤

【注意】

以下的命令需使用root用户进行查询

 

1、显示当前正在运行的容器,找到需要监控服务的containerId

docker ps

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_服务器_10

 

 

2、显示容器所有在运行程序所使用的系统资源

docker stats

[CONTAINER]:以短格式显示容器的 ID。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_服务器_11

 

 

3、显示某个运行程序使用的系统资源情况

docker stats [CONTAINER ID]

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_命令行_12

 

 

 

 

Web项目性能测试通过的通用标准可参考

 

linux jmeter 启动脚本 指定java 版本 linux jmeter配置_命令行_13