性能的核心
性能的核心- 多快好省
省资源 ,省内存,省容量
性能测试第一点: 说明软件硬件的环境,设定环境,硬件内存CPU网络带宽配置,软件版本
性能测试第二点: 需要一定量的负载压力,使用线程模拟大量的用户去跑,或者通过工具jmter湖泊Loadruner去跑
性能测试第三点: 监听系统的正确性,保证数据正确性的同时还要快,光处理请求快无意义,不是说你接到请求不处理就扔掉,那肯定快
性能测试的目的:性能测试除了获取性能指标外,更多的是为了发现性能瓶颈和性能问题,然后针对性能问题和性能瓶颈进行分析和调优!
好(正确性) 成功率(好) 稳定性(好)
快(响应时间)
多(吞吐量) - 同时有多少人访问
关键术语
1.正常负载指相关方需求他们觉得这个指标没有问题那就没问题,如果他们不知道呢?我们就需要探索性能的瓶颈
使资源的利用率处于正常水平?(1.需求:如果用户要求这个CPU,这个内存,这个网络带宽,ok那按需求来.2.如果没有需求呢?)
正常CPU需要低于80%,内存低于80%,磁盘占比低于85%(考虑写日志), 网络带宽使用率低于80%(吞吐量考虑进来多少数据量,出去多少数据量)
负载测试:慢慢逐步不断加压,看状态的变化,同时寻找出性能的拐点
压力测试:也叫极限测试,高负载下的性能测试,看看系统在高压力下是否会出现崩溃的现象
稳定性测试(12小时, 7天) 看这个系统的稳定性,因为系统有些东西是一点点累加的,比如打日志信息,代码写的有问题(内存泄漏一点点泄漏完了),文件句柄用完了(一直打开文件,写入也不关闭)
什么时候需要做性能
并发用户数
并发用户类型划分
系统用户数:占用数据库的空间,变相来看消耗磁盘的容量,模拟磁盘还有一点点空间,查看后台是否会告警
在线用户数:占用内存,系统需要用session来保持会话,用户的在线状态,比如用户不断的上线,早期的12306买票,一点付钱让我重新登录,我被别人挤出来了,我的信息被session库踢掉了,考虑系统同时可以在线多少用户量,开发是否要考虑设置session的超时时间
并发用户数:占用CPU,CPU处理并发用户数
内存和磁盘的区别:
内存的处理速度是磁盘的百倍以上,内存关机之后,数据就会被垃圾回收掉
磁盘的数据是永久保存
吞吐量
如何理解TPS?
比如用户购买商品,首先会发送一个请求到前端页面,前端页面会发送到后端服务器去处理订单,然后去数据库查看库存,查看积分,查看完后返回到前端,用户这一整套操作叫做事务,叫1个TPS
吞吐量是一个总量:跟时间有关系,比如1小时有多少吞吐量,1分钟有多少吞吐量
TPS和响应时间的关系
通常来说TPS越高响应的时间就越慢,TPS到达一个性能的拐点会逐步下降
响应时间
A开头叫服务器处理时间,N开头的叫网络传输时间,如果web服务器和数据库在同一台机器上就没有网络传输的时间
我们可以ping一下单纯看下客户端-->服务器的时间,来推算出哪一块的响应时间叫慢,到底是网络传输占用大,还是处理查询时间消耗大,网络传输占用较小,通过
Wireshark 抓包来看到底哪里处理时间较慢
Wireshark 和fiddler区别:
fiddler只能抓http和https协议
wireshark可以抓市面上所有的协议
资源使用率
思考时间 - 模拟真实用户操作
jmter有个固定定时器
并发用户数与业务场景