1. 性能指标
1)响应时间(Response Time:RT):响应时间指用户从客户端发起一个请求开始到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间
2)HPS(hits per second):每秒点击次数,单位是次/秒
3)TPS(Transaction per second);系统每秒处理交易数,单位是笔/秒
4)QPS(Query per second):系统每秒处理查询次数,单位是次/秒。
对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单机请求
5)无论TSP、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:
5.1 金融行业:1000TPS~50000TPS,不包括互联网化的活动
5.2 保险行业:100TPS~100000TPS,不包括互联网化的活动
5.3 制造业:10TPS~5000TPS
5.4 互联网电子商务:10000TPS~1000000TPS
5.5 互联网中型网站:1000TPS~50000TPS
5.6 互联网小型网站:500TPS~10000TPS
6)最大响应时间(max response time):指用户发出请求或者指令到系统做出反应(响应)的最大时间
7)最小响应时间(min response time):指用户发出请求或者指令到系统做出反应(响应)的最少时间
8)90%响应时间(90%response time):是指所有用户的响应时间进行排序,第90%的响应时间
9)从外部看,性能测试主要关注如下三个指标:
9.1 吞吐量:每秒系统能处理的请求数、任务数
9.2 响应时间;服务处理一个请求或一个任务的耗时
9.3 错误率;一批请求中结果出错的请求所占比例
2. 压测工具——Apache JMeter
2.1 安装
下载地址:http://jmeter.apache.org/download_jmeter.cgi
下载zip格式的压缩包,如图:
解压出来,进入bin目录,双击jmeter.bat启动,如图:
可以在工具栏options中更改外观。
2.2 压测步骤
2.2.1 添加线程组
右键测试计划(testPlan) ——> 添加 ——> 线程(用户)——> 线程组
主要参数设置;
1)线程数:表示允许的并发量(同时多少个用户访问)
2)Ramp-Up:表示线程数多少秒执行完毕
3)循环次数:表示每一个线程发多少个请求,如果勾选永远,那么表示一直请求,知道手动停止
2.2.2 添加测试项(请求)
这里以http请求为例:
右键线程组 ——> 添加 ——> 取样器 ——> Http请求
2.2.3 添加执行结果监听
如图:
添加之后,如图:
在结果树中,可以看到每一个请求的具体信息
2.2.4 添加执行结果汇总监听
如图:
界面如图:
2.2.5 添加执行结果聚合报告监听
如图:
界面如图:
2.2.6 执行请求
1)请求前先清空全部,如图:
2)点击执行
2.3 JMeter Address Already in use错误解决
该错误的原因是Windows本提供的端口访问机制的问题。Windows提供给TCP/IP链接的端口为1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时,将端口占满了。
解决办法:
1)cmd中,用regedit命令打开注册表
2)在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,
1)右键parameters,添加一个新的DWORD,名字为MaxUserPort
2)然后双击MaxUserPort,输入数值数据为65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作)
3)还可以加上 TCPTimeWaitDelay参数值为30 表示30秒回收端口
3)修改配置完毕之后,重启机器
3. 性能监控
jdk提供了两个小工具jConsole、jVisualVm(升级版的jConsole),通过命令行启动,可监控本地和远程应用,远程应用需要配置
3.1 jConsole
启动很简单,cmd ——> 键入jconsole,即可打开jConsole,如图:
本地进程,双击需要查看的进程即可弹出画面,如图:
点击 不安全的连接,如图:
3.2 jVisualVm
cmd窗口键入jvisualvm即可打开界面,如图:
jVisualVM可以监控内存泄漏,跟踪垃圾回收,执行时内存、CPU分析,线程分析等
jvisualvm的使用:
1)首先需要安装一个插件visual Gc
2)然后,打开visual Gc,如图;