性能测试概念
1、为什么要做性能测试
* 满足用户的使用需求:当网站访问量大时容易引起崩溃,比如12306、微博、外卖网站等
做性能测试之后就可以评估这个系统可以承载的用户量或者容量:比如同一时间的并发量
* 最小化成本:新服务器上线不知道要部署多少台
* 评估应用系统性能:给运维做系统容量规划提供依据、给开发提供应用调优的参考
2、什么时性能测试?
*性能测试是模拟多个用户的操作对服务器硬件性能的影响
如何评估性能?
TPS,Transaction per Second,服务器每秒事务处理能力
RT,Response Time,响应时间
常见的性能压力测试工具
性能压力测试工具,主要是模拟出来多个/大量用户的请求,对服务器造成一些影响来进行测试
Apache ab:apache http服务器性能测试工具,命令行工具,在电脑上打开终端进行使用
Apache Jmeter:支持多平台,支持多种网络协议:https、http,使用java语言开发,开源工具,具有图形化界面,同时也有命令行方式使用
LoadRunner:仅支持windows系统,支持多种协议,收费软件,使用C语言开发
Locust:支持多种协议,有web界面,开源免费,使用python语言开发
nGrinder:naver公司基于grinder开发的性能测试平台,grinder是一个能运行jython、groovy编写测试脚本的应用程序,免费软件,使用java语言开发
JMeter优点
入门简单,有图形调试界面
使用java语言开发,支持多操作系统平台
插件机制,可以二次开发定制协议,可以使用第三方开发者的协议支持
JMeter安装
windows环境下安装jmeter
1、安装jdk并设置java环境变量
2、从官网下载Windows的压缩包:
https://jmeter.apache.org/download_jmeter.cgi
3、将下载的文件解压缩,然后进入apache-jmeter-5.4.1\bin文件路径下,以管理员身份运行windows的批处理文件jmeter.bat
启动后在控制台显示如下信息,并且同时会打开jmeter的图形界面
JMeter设置
设置HEAP:jmeter.bat
apache-jmeter-5.4.1\bin目录下,编辑jmeter.bat文件,将set HEAP的值设置为符合要求的值
其中-Xms1g表示分配最小内存为1g,-Xmx2g表示分配最大内存为2g
通过jconsole可以查看vm概要,看到相应的heap内存分配有改变:
设置HEAP:jmeter.sh
apache-jmeter-5.4.1\bin目录下,编辑jmeter.sh文件,增加一行:JVM_ARGS="-Xms1g -Xmx2g"
其中-Xms1g表示分配最小内存为1g,-Xmx2g表示分配最大内存为2g
通过jconsole的监控平台查看jmeter进程信息,在cmd输入jconsole,打开如下界面
选择ApacheJMeter进行连接,选择不安全连接
在概览里面可以看到已提交的和最大队内存使用量
在vm概要可以查看:
JMeter线程组:
线程组是性能测试的资源调度池,控制性能测试的运行调度、并发数、执行策略等
线程组分类:
setup thread group、thread group、teardown thread group
虚拟用户并发测试:
首先,使用python -m http.server 80命令在本地启动一个http的服务
可以通过http://本机IP:80进行访问
因此在Test Plan下创建一个线程组,在线程组下创建一个http的取样器,如下图
http request:输入Server name or ip信息,由于协议和端口都是默认的,所有不用填写,如果不为默认的http和80端口,则根据实际情况填写
在Tread group中,以下几个参数可以根据实际压测进行设置
Number of Treads:模拟并发的用户数
Ramp-up period:在多长时间把模拟的用户数模拟发送出去(我是这么理解的,比如我要模拟50个用户,时间周期是5s,那么每秒jmeter会模拟10个并发用户去访问)
loop count:循环次数,infinite表示永远
Duration:持续时间,如果循环设置为永远,那么持续时间设置后,到达持续的时间后会自动停止,否则需要用户手动停止
Startup delay:延迟启动的时间