服务器并发测试(jmeter)
一 测试环境
服务器端:
硬件配置:
一台笔记本电脑,cpu,interl core i5. 内存:8G
软件配置:
操作系统:Ubuntu 18.04.2
docker:18.09.6
nginx: 1.14.0
Python :3.6.8
django: 2.2.2
uWSGI :2.0.18
大网环境:
局域网内
客户端:
并发测试工具:jmeter
二,环境搭建
docker 制作与运行参考
https://www.cnblogs.com/huanhuaqingfeng/p/11075718.html
https://www.cnblogs.com/huanhuaqingfeng/p/11059168.html
三 测试描述与数据
docker数目:表示启动的django数目
docker配置:表示uwsgi配置,processes = 2,threads = 48,这两个项的设置
时延:django中模拟的请求延时,ms为单位
采样设置:jmeter采样配置,num_threads/ramp-up period/loop
num_threads:测试启动的线程数目
ramp-up period:线程启动的周期
loop:循环次数
执行时间:jmeter 执行完样本的总时间 ,s为单位
响应平均值:jmeter average,ms为单位。
其他值: jmeter median/90% line/95% line/99% line/min/maximum
Median: 50%用户的请求的响应时间,中位数
90%Line:90%的请求的响应时间
95%Line:95%的请求的响应时间
99%Line:99%的请求的响应时间
Min:最小的响应时间
Max:最大的响应时间
处理速度:jmeter throughoutput ,平均每秒处理样本数目
错误描述:是否报错
jmeter 界面配置图:
表一:
序号
|
docker 数目
|
docker配置
|
时延
|
采样设置
|
样本总数
|
执行时间
|
响应平均值
|
其他值
|
处理速度
|
错误描述
|
---|---|---|---|---|---|---|---|---|---|---|
1 | 8 | 2/48 | 100 | 50/3/300 | 15000 | 37 | 114 | 111/122/130/163/105/275 | 399 | 无 |
2 | 8 | 2/48 | 100 | 54/3/300 | 16200 | 37 | 115 | 113/125/132/151/105/234 | 430 | 无 |
3 | 8 | 2/48 | 100 | 55/3/300 | 错 | |||||
4 | 8 | 2/48 | 100 | 10/3/600 | 6000 | 74 | 118 | 117/125/129/139/109/179 | 80 | 无 |
5 | 8 | 2/48 | 100 | 20/3/600 | 12000 | 73 | 117 | 115/127/133/151/106/257 | 163 | 无 |
6 | 8 | 2/48 | 100 | 25/3/600 | 15000 | 75 | 121 | 115/141/153/184/106/324 | 198 | 无 |
7 | 8 | 2/48 | 100 | 27/3/600 | 16200 | 76 | 119 | 115/138/150/178/105/246 | 214 | 无 |
8 | 8 | 2/48 | 100 | 28/3/600 | 错 | |||||
9 | 8 | 2/48 | 100 | 10/3/1200 | 12000 | 146 | 118 | 117/126/130/141/110/213 | 82 | 无 |
10 | 8 | 2/48 | 100 | 16/3/1200 | 19200 | 144 | 117 | 116/124/128/139/107/271 | 132 | 无 |
11 | 8 | 2/48 | 100 | 17/3/1200 | 错 | |||||
12 | 8 | 2/48 | 100 | 10/3/2400 | 24000 | 284 | 116 | 116/123/126/135/107/175 | 84 | 无 |
13 | 8 | 2/48 | 100 | 16/3/2400 | 38400 | 287 | 118 | 116/126/130/142/107/194 | 133 | 无 |
14 | 8 | 2/48 | 100 | 17/3/2400 | 错 | |||||
15 | 8 | 2/48 | 100 | 16/3/4800 | 76800 | 574 | 118 | 116/126/130/143/106/207 | 134 | 无 |
16 | 8 | 2/48 | 100 | 17/3/4800 | 错 | |||||
17 | 8 | 2/48 | 100 | 16/3/9600 | 153600 | 1148 | 118 | 116/126/130/141/107/200 | 134 | 无 |
18 | 8 | 2/48 | 100 | 17/3/9600 | 错 | |||||
19 | 1 | 2/48 | 100 | 50/3/300 | 15000 | 76 | 241 | 248/312/332/367/106/434 | 197 | 无 |
20 | 1 | 2/48 | 100 | 54/3/300 | 16200 | 78 | 250 | 255/323/345/383/107/455 | 205 | 无 |
21 | 1 | 2/48 | 100 | 55/3/300 | 错 | |||||
22 | 1 | 2/48 | 100 | 10/3/600 | 6000 | 78 | 125 | 122/146/154/170/109/198 | 76 | 无 |
23 | 1 | 2/48 | 100 | 27/3/600 | 16200 | 123 | 200 | 207/259/273/296/106/356 | 130 | 无 |
24 | 1 | 2/48 | 100 | 28/3/600 | 错 | |||||
25 | 1 | 2/48 | 100 | 10/3/1200 | 12000 | 156 | 127 | 122/150/158/171/109/191 | 76 | 无 |
26 | 1 | 2/48 | 100 | 16/3/1200 | 19200 | 178 | 145 | 141/186/196/214/109/253 | 107 | 无 |
27 | 1 | 2/48 | 100 | 27/3/1200 | 32400 | 246 | 200 | 200/206/260/275/303/107/386 | 131 | 无 |
28 | 1 | 2/48 | 100 | 28/3/1200 | 错 | |||||
29 | 1 | 2/48 | 100 | 10/3/2400 | 24000 | 307 | 125 | 121/147/155/170/108/200 | 78 | 无 |
30 | 1 | 2/48 | 100 | 27/3/2400 | 64800 | 489 | 200 | 207/260/275/301/106/378 | 132 | 无 |
31 | 1 | 2/48 | 100 | 28/3/2400 | 错 | |||||
32 | 1 | 2/48 | 100 | 25/3/4800 | 120000 | 928 | 191 | 198/249/262/285/106/371 | 129 | 无 |
33 | 1 | 2/48 | 100 | 26/3/4800 | 124800 | 952 | 196 | 202/254/268/293/106/365 | 131 | 无 |
34 | 1 | 2/48 | 100 | 27/3/4800 | 错 | |||||
35 | 1 | 2/48 | 100 | 16/3/9600 | 153600 | 1148 | 118 | 116/126/130/141/107/200 | 134 | 无 |
36 | 1 | 2/48 | 100 | 26/3/9600 | 249600 | 1889 | 194 | 201/253/267/291/106/423 | 132 | 无 |
37 | 1 | 2/48 | 100 | 27/3/9600 | 错 | |||||
38 | 8 | 2/4 | 100 | 16/3/2400 | 38400 | 288 | 117 | 116/126/130/142/107/195 | 133 | 无 |
39 | 8 | 2/4 | 100 | 17/3/2400 | 错 | |||||
40 | 8 | 2/4 | 100 | 16/3/4800 | 76800 | 574 | 118 | 116/126/131/144/107/202 | 133 | 无 |
41 | 8 | 2/4 | 100 | 17/3/4800 | 错 | |||||
42 | 8 | 2/480 | 100 | 16/3/2400 | 38400 | 292 | 120 | 118/133/140/158/106/259 | 132 | 无 |
43 | 8 | 2/480 | 100 | 16/3/4800 | 76800 | 581 | 120 | 117/132/140/158/106/235 | 132 | 无 |
44 | 8 | 2/480 | 100 | 16/3/9600 | 153600 | 1164 | 120 | 118/133/140/158/105/322 | 132 | 无 |
45 | 1 | 2/4 | 100 | 27/3/2400 | 64800 | 922 | 382 | 379/416/430/466/111/640 | 70 | 无 |
46 | 1 | 2/4 | 100 | 26/3/4800 | 124800 | 1777 | 368 | 365/399/412/448/111/611 | 70 | 无 |
47 | 1 | 2/480 | 100 | 25/3/2400 | 60000 | 465 | 195 | 200/257/273/303/106/380 | 126 | 无 |
48 | 1 | 2/480 | 100 | 26/3/2400 | 62400 | 483 | 198 | 204/261/277/308/106/368 | 129 | 无 |
49 | 1 | 2/480 | 100 | 26/3/4800 | 124800 | 959 | 197 | 203/260/277/310/105/432 | 130 | 无 |
50 | 8 | 2/48 | 200 | 16/3/2400 | 38400 | 525 | 217 | 216/224/229/241/207/319 | 73 | 无 |
51 | 8 | 2/48 | 200 | 30/3/2400 | 72000 | 541 | 222 | 217/240/252/280/206/418 | 133 | 无 |
52 | 8 | 2/48 | 200 | 30/3/4800 | 144000 | 1075 | 222 | 217/241/253/282/206/400 | 133 | 无 |
53 | 8 | 2/48 | 200 | 17/3/4800 | 错 | |||||
54 | 8 | 24/48 | 200 | 30/3/4800 | 144000 | 1156 | 238 | 224/289/317/378/206/604 | 124 | 无 |
56 | ||||||||||
57 | ||||||||||
表二:
时延200
docker配置:uwsgi,processes 并发处理进程数
listern:# uwsgi,并发的socket 连接数。默认为100。优化需要根据系统配置
use epoll;#nginx 使用epoll的I/O模型
worker_rlimit_nofile 20000; #一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致
worker_connections 20000;#nginx,每个进程允许的最多连接数, 理论上每台nginx 服务器的最大连接数为worker_processes*worker_connections
keepalive_timeout:nginx,0 禁用,KeepAlive 在一段时间内保持打开状态,它们会在这段时间内占用资源。占用过多就会影响性能
id | docker配置 | listern | worker_rlimit_nofile | keepalive_timeout | use epoll | docker | 采样设置 | 处理速度 | 响应平均值 |
1 | 24/48 | 65535 | 20000 | 0 | yes | 8 | 40/3/2400 | 169 | 233 |
2 | 24/48 | 65535 | 20000 | 0 | yes | 8 | 80/3/2400 | 328 | 241 |
3 | 24/48 | 65535 | 20000 | 0 | yes | 8 | 85/3/2400 | 330 | 254 |
4 | 24/48 | 65535 | 20000 | 0 | yes | 8 | 81/3/4800 | 322 | 249 |
5 | 24/48 | 65535 | 20000 | 0 | yes | 8 | 81/3/9600 | 322 | 249 |
6 | 24/48 | 65535 | 20000 | 65 | yes | 8 | 30/3/2400 | 133 | 230 |
7 | 24/48 | 65535 | 20000 | 35 | yes | 8 | 31/3/2400 | 131 | 232 |
8 | |||||||||
9 | |||||||||
10 | |||||||||
11 | |||||||||
12 | |||||||||
13 | |||||||||
14 | |||||||||
15 | |||||||||
16 | |||||||||
17 | |||||||||
18 |
四 结论:
表一所得结论:
1,根据处理速度与循环次数判断,短时间内,并发处理速度能达到比较高的值,但是长时间看,并发处理速度是个均值,大概133左右,这个值与docker开启的数量没有关系。
2,从同等采样数据量看,docker开启数量多的并发处理速度高,平均响应时间短。
3,多docker时,threads 从小到大变化,不影响多docker并发处理速度和响应时间
单docker时,threads 从小到大变化,并发处理速度升高,响应时间减少,一旦并发速度到133左右,调整该值没什么作用
4,时延不影响并发处理速度
表二所得结论:
keepalive_timeout会影响并发处理速度
可能分析的有问题,仅供参考!!!!