最近公司开了一个新的项目,直播类型的,对服务器性能要求比较高,那么就有了下面的故事!
测试工具是Jmeter,下载地址
性能指标
1、性能指标响应时间(Response Time: RT)响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。
HPS (Hits Per Second) :每秒点击次数,单位是次秒。
TPS (Transaction per Second) :系统每秒处理交易数,单位是笔/秒。
QPS (Query per Second) :系统每秒处理查询次数,单位是次秒。对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS-QPS-HPS,般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单击请求。
一般情况下:
金融行业: 1000TPS-50000TSs,不包括互联网化的活动
保险行业: 100TPS~1000000TPS不包括互联网化的活动
制造行业: 10TPS~5000TPS
联网电商务: 10000TPS~1000000TPS
互联网中网站: 1000TPS~5000OTPS
互联网小型网站: 500TPS~10000TPS
无论TPS、 QPS, HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,
最大响应时间(Max Response Time)指用户发出请求或者指令到系统做出反应(响应)
最少响应时间(Mininum ResponseTime)指用户发出请求或者指令到系统做出反应(响wмиe)应)的最少时间。
90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第90%的响应时间。
从外部看,性能测试主要关注如下三个指标
吞吐量:每秒钟系统能够处理的请求数、任务数。
响应时间:服务处理一个请求或一个任务的耗时。
错误率:一批请求中结果出错的请求所占比例。
使用
将下载的Jmeter包打开,进入bin目录点击jmeter.bat文件运行,这里注意需要java1.8的环境
设置中文简体
创建线程组
这就是用来模拟用户发送请求的
设置用户组选项
添加测试类型
添加监听器
这个监听器就是请求的结果分析
这是结果树的界面,左边会显示请求是否成功,右边显示请求回来的结果
添加汇总报告
图中的吞吐量就是用来衡量我们的服务端接口的并发能力的重要指标
添加聚合报告
这个就是相对综合的对接口评估
添加汇总图
将数据以图标的方式显示出来
启动测试
启动
查看结果树
查看汇总报告
这里的标准偏侧越大,代表服务越不稳定
查看聚合报告
查看汇总图
注意
当我们测试请求发送太多的时候JMeter会出现这样的情况
这是告诉我们地址被占用 了
这不是我们服务的问题,也不是JEmter的问题,而是Windows的问题
windows本身提供的端口访问机制的问题。Windows提供给TCP/P链接的端口为1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。
解决方案
1.cmd中,用regedit命令打开注册表
2在HKEY LOCAL MACHINESYSTEM CurrentControlSet Services Icpip\Parameters 下,
1右击parameters,添加一个新的DWORD,名字为MaxUserPort
2然后双击MaxUserPort,输入数值数据为165534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作哦)
3,修改配置完毕之后记得重启机器才会生效windows官方文档
TCPTimedWaitDelay: 30 设置回收时间