一、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
出现下图则环境安装成功
二、单台机命令行运行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文件,可界面中查看聚合报告等监听结果
五、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
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
在上面的交互式窗口中,可以使用nmon 快捷键来显示不同的系统资源统计数据:
q : 停止并退出 Nmon
h : 查看帮助
c : 查看 CPU 统计数据
m : 查看内存统计数据
d : 查看硬盘统计数据
k : 查看内核统计数据
n : 查看网络统计数据
N : 查看 NFS 统计数据
j : 查看文件系统统计数据
t : 查看高耗进程
V : 查看虚拟内存统计数据
v : 详细模式
按下c,m,d后如下图,CPU、内存、磁盘的消耗情况都直观的展现出来了,按q键可以退出。
CPU:
内存:
三、数据采集
为了实时监控系统在一段时间内的使用情况并将结果记录下来,我们可以通过运行以下命令实现:
1) linux服务器终端,首先进入环境变量目录,使用命令记录一段时间内的监控数据,执行测试命令:
cd /usr/local/bin
./nmon -f -t -s 30 -c 180 -m /app/nmon16e/
-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文件。
四、查看数据
官网下载分析工具,如附件或下载地址:
nmon analyser.xls工具的使用方法如下:
(1)打开nmonanalyser.xls工具;
(2)选择启用宏
(3)点击Analyse nmondata按钮,加载之前下载的 test_190826_1416.csv文件。
(4)提示运行错误时选择[结束]
以下是分析结果的截图:
五、结束nmon运行
查询进程号,然后杀掉该进程以停止监控
ps -ef | grep nmon
kill -9 31108
六、内存分析
可参考
https://www.cnblogs.com/python-xiakaibi/p/11118888.html
若时不会使用nmon,那还可以使用docker来看内存和cpu的使用里,但是只能通过截图来记录数据,因此此种方式存在误差
docker监控rancher服务器操作步骤
【注意】
以下的命令需使用root用户进行查询
1、显示当前正在运行的容器,找到需要监控服务的containerId
docker ps
2、显示容器所有在运行程序所使用的系统资源
docker stats
[CONTAINER]:以短格式显示容器的 ID。
[CPU %]:CPU 的使用情况。
[MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
[MEM %]:以百分比的形式显示内存使用情况。
[NET I/O]:网络 I/O 数据。
[BLOCK I/O]:磁盘 I/O 数据。
[PIDS]:PID 号。
3、显示某个运行程序使用的系统资源情况
docker stats [CONTAINER ID]
Web项目性能测试通过的通用标准(可参考):