Linux网络之并发压力测试工具分析

准备

操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
压测常用的性能指标
每秒处理事务(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

采样器: 录制请求,生成请求
断言
监听器可放在线程组内,也可放在外面
线程组: 线程数(多个),循环次数
线程组:可以配置多个
支持master-slave模式

测试任务:可以配置多个不同的线程组
线程组: 可以配置不通线程数*循环次数, 测试不同的请求
请求: 配置断言和超时时间

ab: httpd-2.4.51.tar.bz2
它的扩展性比较低,用来测试post get接口请求非常便捷,但只能提供基本性能指标,没有图形化结果,无法监控

jemter/ab 多线程,阻塞IO
并发量可以通过线程数增加,线程之间隔离较好,但线程数过多,切换消耗会变大,效果变差

httperf-master.zip
撸代码

wrk: http测试,c/lua
少量线程: 异步IO,发包时阻塞,收包非阻塞

siege-master.zip 多线程,类似ab
模拟n个用户不停地访问某个URL的场景


http_load-09Mar2016.tar.gz
单进程复用, 最多3千连接

webbench: 多进程 fork出子进程进行测试
最多3万连接


vegeta-master.zip go

locust: python 协程 gevent

ostaw32-src-1404.zip

效果