压测常用的性能指标
- 每秒处理事务(TPS,Transaction Per Second)每秒系统处理事务(通过、失败以及停止)的数量。通过它可以确定系统在任何给定时刻的时间事务负载。
- 每秒查询率(QPS,Queries Per Second)一台服务器每秒能够响应的查询次数。通过它可以确定系统的最大吞吐能力。
- 并发用户数(Number of Concurrent Users)同一时间点请求服务器的用户数。
- 最佳并发用户数(The Optimum Number of Concurrent Users)随着并发量的增加,吞吐量(每秒处理事务)不再相应增加,并且响应时间继续增长。
- 事务平均响应时间(Average Transaction Response Time) 每一事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。
- 最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应)的最大时间。
- 最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响应)的最少时间。
- 90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第90%的响应时间。
- CPU(CentralProcessing Unit) 中央处理器,是计算机的重要设备之一。功能主要是解释计算机指令以及处理计算机软件中的数据。
- CPU利用率(CPU Usage) CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。平时所说的CPU利用率是指:CPU执行非系统空闲进程的时间
- CPU总的执行时间。
- 内存(Memory) 也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。
- 内存使用率(Memory usage) 内存占用率指的是此进程所开销的内存。
- 磁盘IO(Disk input/ output) 磁盘的读写包速率。
- 网卡负载(Network Load) 网卡的进出带宽,包量。
测试工具资源占用消耗:
- CPU :
- 内存:
- 并发量:
各种压测工具
apache-jmeter-5.4.1_src.zip
1
2
3
4
5
6
7
8
9
10采样器: 录制请求,生成请求
断言
监听器可放在线程组内,也可放在外面
线程组: 线程数(多个),循环次数
线程组:可以配置多个
支持master-slave模式
测试任务:可以配置多个不同的线程组
线程组: 可以配置不通线程数*循环次数, 测试不同的请求
请求: 配置断言和超时时间ab: httpd-2.4.51.tar.bz2
1
它的扩展性比较低,用来测试post get接口请求非常便捷,但只能提供基本性能指标,没有图形化结果,无法监控
jemter/ab 多线程,阻塞IO
1
并发量可以通过线程数增加,线程之间隔离较好,但线程数过多,切换消耗会变大,效果变差
httperf-master.zip
1
撸代码
wrk: http测试,c/lua
1
少量线程: 异步IO,发包时阻塞,收包非阻塞。 这个工具代码相对比较清晰。
siege-master.zip 多线程,类似ab
1
模拟n个用户不停地访问某个URL的场景
http_load-09Mar2016.tar.gz
1
单进程复用, 最多3千连接
webbench: 多进程 fork出子进程进行测试
1
最多3万连接
vegeta-master.zip go
locust: python 协程 gevent
ostaw32-src-1404.zip