性能测试的目的?
评估+预测+调优。
评估当前系统的性能,预测系统以后的瓶颈,找到瓶颈点,并进行调优优化。
性能测试的指标:
系统指标&资源指标。
系统指标:
并发用户数:同一时刻向系统提交请求的用户数。
tps(Transaction per second):系统每秒处理的事务数
响应时间:系统处理事务的响应时间的平均值
成功率:成功事务的比例
资源指标:
cpu:主要看cpu使用率和上下文切换频率。
内存:系统内存看swap的si与so
jvm内存看gc的速度
磁盘IO:看磁盘使用率(util),请求队列的长度(avgqu-sz),服务时间(svctm)和等待时间(await )
网络IO:主要看网络延时。
几个概念的区分:
tps与qps:
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数。
所以对于压测一般的系统,指标为tps,若是数据库类似的系统,一个事务里面可能存在多条执行语句,这个时候观察qps更为合适。
吞吐量与tps
若并发数为n,响应时间为t,则 tps为n/t
吞吐率:单位时间内网络上传输的数据量。若平均每个请求字节数为m kb,则吞吐率为m*tps
吞吐量:若压测持续了t1 s,则吞吐量为 吞吐率*t1.
单机支持多少并发
这和你的机器硬件相关,也和压测工具有关。
比如我的机器i5双核的cpu,8g的内存。压测一个简单的接口,可以支持500+的并发。
但是如果压测方案逻辑复杂,比如在jmeter里面加了很多控制器,监听器,这些都是很耗机器性能,这时候可能连100并发都压不上去。