一、压力试验
- 压力测试检查系统在当前软硬件环境下能承受的最大负荷,并帮助找出系统瓶颈。压力测试 它是为了保持系统在线处理能力和稳定性在一个标准范围内,以便知道。
- 使用压力测试,我们希望发现许多其他测试方法更难发现的错误。有两种错误:
- 有效的压力测试系统将应用以下这些关键条件:
1.性能指标
- 响应时间(Response Time: RT) 响应时间是指用户从客户端发起请求,从服务器端收到响应 整个过程的时间应该结束。
- HPS(Hits Per Second) :每秒点击次数,单位为次/秒。
- TPS(Transaction per Second):系统每秒处理交易数,单位为笔/秒。
- QPS(Query per Second):系统每秒处理查询次数,单位为次/秒。 在互联网业务中,如果有些业务有并且只有一个请求连接,那么 TPS=QPS=HPS,一 般情况下用 TPS 用来衡量整个业务流程, QPS 用来衡量接口查询的次数 HPS 来表 单击服务器请求。
- 无论 TPS、QPS、HPS,这个指标是衡量系统处理能力的一个非常重要的指标,越大越好。 一般情况下: 金融行业:1000TPS~50000TPS,不包括互联网活动 保险行业:100TPS~100000TPS,不包括互联网活动 制造行业:10TPS~5000TPS 互联网电子商务:1万TPS~1000000TPS 中型互联网网站:1万TPS~50000TPS 小型互联网网站:5000TPS~10000TPS
- 最大响应时间(Max Response Time) 指用户向系统发送请求或指令以响应(响应) 最大时间。
- 至少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响 应)最少时间。
- 响应时间90%(90%) Response Time) 是指对所有用户的响应时间进行排序 90%的响 应时间。
- 从外部看,性能测试主要关注以下三个指标 吞吐量:系统每秒处理的请求数和任务数。 响应时间:服务处理一个请求或一个任务的耗时。 错误率:一批请求中错误请求的比例。
2.Apache JMeter
1)JMeter安装
https://jmeter.apache.org/download_jmeter.cgi
2)点击bin目录下的jmeter.bat文件 3)JMeter 压测示例 1.添加线程组 详细说明线程组参数:
- 线程数:虚拟用户数。虚拟用户占用一个过程或线程。这里设置了多少虚拟用户? 也就是说,设置个线程数。
- Ramp-Up Period(in seconds)准备时间:所有虚拟用户需要多长时间才能启动。 线程数为 准备时间为10 2,那么需要 2 秒钟启动 10 线程,即每秒启动 5 个 线程。
- 循环次数:每个线程发送请求次数。若线程数为 循环次数为10 100,然后每条线 程发送 100 次请求。总请求数为 10*100=1000 。如果选择永远,所有线程都会 一直发送请求,直到选择停止操作脚本。
- Delay Thread creation until needed:延迟线程创建直到需要。
- 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要检查循环次数 永远)
- 持续时间(秒):测试持续时间将覆盖结束时间
- 启动延迟(秒):测试延迟启动时间将覆盖启动时间
- 启动时间:测试启动时间,启动延迟将覆盖。当启动时间已经过去时,只需手动测试 时间也会覆盖它。
- 结束时间:测试结束时间,持续时间将覆盖。
2.添加 HTTP 请求 3.添加监听器 4.启动压测&查看分析结果
- 与开发一起确认错误率,确定是否允许错误发生或允许错误率在多大范围内;
- Throughput 如果每秒吞吐量要求的数量大于并发数,则可以慢慢增加;如果压力测量机 当机器性能良好时,吞吐量小于并发数,说明并发数不能再增加,可以慢慢增加 向下减少,找到最佳并发数;
- 压力测量结束后,登录相应的 web 服务器查看 CPU 数据分析等性能指标;
- 最大的 tps,并发数不断增加,加到 tps 一定值开始下降,那么那个值就是 最大的 tps。
- 最大并发数:最大并发数和最大并发数 tps 这是一个不同的概率。并发数一般会不断增加,达到 一个值后,如果服务器要求超时,可以认为该值是最大并发数。
- 如果压力机任务管理器查看压力测试过程中的性能瓶颈 cpu、网络和 cpu 一切正常,未达 到 超过90%的服务器有问题,压力机没有问题。
- 影响性能考点包括: 数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面
- 首先,考虑你自己的应用程序属于 CPU 密集型还是 IO 密集型
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 修改配置后,记得重启机器。 https://support.microsoft.com/zh-cn/help/196271/when-you-try-to-connect-from-tcp-ports-grea ter-than-5000-you-receive-t
TCPTimedWaitDelay:30