python_locust_测性能的流程及理发店模型

实施性能4大模块:
(1)脚本开发
(2)场景设计:画压力曲线图、监控、压力、设置
a、定压力曲线图:
根据测试目的定出压力曲线图,例如:评估下这个接口的性能如何?要评估性能,则需要观察在不同并发的情况下,服务器的响应时间、吞吐量的变化,随着加大并发,则出现拐点,30并发的时候,吞吐量(CPU每秒处理的数据量,吞吐量的大小由算法决定,python写出来的算法比c语言写出来的处理数据量就慢)上不去了。这个时候,我们就不要设置100并发了,设置个40并发,每个用户的等待时间稍微长点,就容易观察各个压力下的吞吐量和响应时间。
产品接口基准是支持40并发 >>> 1秒加1个用户(这就是设计出的压力曲线图,几秒增加几个用户设计的好就容易定位出问题,)。 >>> 可以看到不同的压力下(1个用户下、10个用户下、40个用户下),响应时间、吞吐量的性能变化,因为越宽松越容易定位出问题
b、监控
jmeter压测不要用jmeter做监控工具,监控交给监控平台去做。避免多度监控,找一个合适工具即可,
第一层次:基本性能指标:吞吐量(能评价服务器处理数据量的指标都可以叫做吞吐量,例如:TPS)、响应时间、资源利用率,压测工具都会自动监控的。如下:
total request per second > TPS > 每秒处理的事务量
response ms 响应时间
users 用户数
在这里插入图片描述
如果第一层次满足不了测性能的需求,则进入后端服务器的一个监控 >>> 数据库、虚拟机、中间件等等,暂不深入。
常用命令:top、vmstat 2
在这里插入图片描述
分布式监控:zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
jmeter压测的监控方案:

c、压力
c.1我的电脑有8个CPU,说明能同时处理8个线程,jmeter里面的线程组,如果你设置了40个线程,则电脑最多同时处理8个线程,后面的排队,实际是并不是40并发,所以对服务器的压力没有传递上去,吞吐量无法出现你想要的拐点。如果压力没上去,那是毫无意义的!
所以要用docker进行分布式压测(每个容器里面放一个locust,相当于N台电脑在给服务器同时请求,避免了单台电脑因为线程需要排队压力上不去的问题),为什么,因为一个机器的cpu有限啊,你给了40并发,实际只有8并发,压力上不去结果没任何意义。
c.2压力机,1个电脑最多跑多少比较合适?locust几万并发没问题,jmeter一般是200-300并发。
c.3分布式压测原理:https://docs.locust.io/en/stable/running-locust-docker.html#running-locust-docker
在这里插入图片描述

历时一周,用locust基本实现以下目标:把压力给压到服务器上,看基本性能指标即可,至于结果分析、性能调优,我就不用考虑了
涉及东西太多了,如下:------------------------------------
(1)性能测试结果分析:
基本性能指标测试结果分析、CPU/内存/磁盘/网络等性能分析、数据库常见性能指标分析、中间件常见性能指标分析、jvm核心原理、java各种线程状态码实现及解析、深入解析JVM垃圾回收算法及原理、
(2)瓶颈分析及定位:
前端性能分析及瓶颈定位、stack/heap深入解读瓶颈定位、CPU压力过大的瓶颈分析及定位、资源利用率过低的瓶颈分析及定位、内存泄漏原理及代码级瓶颈分析及定位、带宽消耗分析及网络瓶颈定位、数据库常见瓶颈分析、数据库慢查询定位、SQL语句执行计划分析及定位、SQL语句资源消耗细分解、磁盘10瓶颈分析及定位、java代码级剖析工具、Xhprof的Php代码瓶颈分析及定位、
(3)性能调优:
JVM核心参数优化设置、中间件核心参数化设置、JVM垃圾回收算法选择及优化、JAVA代码优化解析、Mysql架构优化设计、Sql语句优化、mysql/schem设计优化、mysql常用存储引擎优化

---------------------------------以下:理发店模型的一点总结------------------------------------------------------------------------
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45451320/article/details/117377091