考虑问题
项目架构是分布式的吗?
用到了缓存和消息队列没有?
高并发的业务有没有特殊处理?
数据库设计是否合理?
系统用到的算法是否还需要优化?
系统是否存在内存泄露的问题?
项目使用的 Redis 缓存多大?服务器性能如何?用的是机械硬盘还是固态硬盘?
测试人员,作出测试表格
- 响应时间;
- 请求成功率;
- 吞吐量;
性能指标
相应时间
响应时间 RT(Response-time)就是用户发出请求到用户收到系统处理结果所需要的时间。
RT 是一个非常重要且直观的指标,RT 数值大小直接反应了系统处理用户请求速度的快慢。
并发数
并发数可以简单理解为系统能够同时供多少人访问使用也就是说系统同时能处理的请求数量。
并发数反应了系统的负载能力。
QPS和TPS
QPS(Query Per Second) :服务器每秒可以执行的查询次数;
TPS(Transaction Per Second) :服务器每秒处理的事务数(这里的一个事务可以理解为客户发出请求到收到服务器的过程);
吞吐量
吞吐量指的是系统单位时间内系统处理的请求数量。
一个系统的吞吐量与请求对系统的资源消耗等紧密关联。请求对系统资源消耗越多,系统吞吐能力越低,反之则越高。
TPS、QPS 都是吞吐量的常用量化指标。
- QPS(TPS) = 并发数/平均响应时间(RT)
- 并发数 = QPS * 平均响应时间(RT)
系统活跃度指标
PV
访问量, 即页面浏览量或点击量,衡量网站用户访问的网页数量;在一定统计周期内用户每打开或刷新一个页面就记录 1 次,多次打开或刷新同一页面则浏览量累计。UV 从网页打开的数量/刷新的次数的角度来统计的。
UV
独立访客,统计 1 天内访问某站点的用户数。1 天内相同访客多次访问网站,只计算为 1 个独立访客。UV 是从用户个体的角度来统计的。
DAU
日活跃用户数量。
MAU
月活跃用户人数。
举例:某网站 DAU 为 1200w, 用户日均使用时长 1 小时,RT 为 0.5s,求并发量和 QPS。
平均并发量 = DAU(1200w)* 日均使用时长(1 小时,3600 秒) /一天的秒数(86400)=1200w/24 = 50w
真实并发量(考虑到某些时间段使用人数比较少) = DAU(1200w)* 日均使用时长(1 小时,3600 秒) /一天的秒数-访问量比较小的时间段假设为 8 小时(57600)=1200w/16 = 75w
峰值并发量 = 平均并发量 * 6 = 300w
QPS = 真实并发量/RT = 75W/0.5=150w/s
后端性能测试工具
Jmeter :Apache JMeter 是 JAVA 开发的性能测试工具。
Galtling :一款基于 Scala 开发的高性能服务器性能测试工具。
ab :全称为 Apache Bench 。Apache 旗下的一款测试工具,非常实用。
前端性能测试工具
- Fiddler:抓包工具,它可以修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是 Web 调试的利器。
- HttpWatch: 可用于录制 HTTP 请求信息的工具。