一 測試環境
服務器端:
硬件配置:
一台筆記本電腦,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會影響並發處理速度
可能分析的有問題,僅供參考!!!!