up python
All checks were successful
/ build (push) Successful in 37s

This commit is contained in:
2025-03-04 20:07:53 +01:00
parent c7cdd65f87
commit 21ff0825cc

View File

@ -158,7 +158,7 @@ services:
- traefik.http.services.fastapi.loadbalancer.server.port=8000 - traefik.http.services.fastapi.loadbalancer.server.port=8000
replicas: 2 replicas: 2
placement: placement:
max_replicas_per_node: 2 max_replicas_per_node: 1
constraints: constraints:
- node.labels.run == true - node.labels.run == true
@ -1030,30 +1030,28 @@ Huge gap in performance against Laravel Octane here, about twice better ! Withou
### FastAPI ### FastAPI
As a side note here, uvicorn is limited to 1 CPU core, so I use 2 replicas on each worker to use all CPU cores.
#### FastAPI scenario 1 #### FastAPI scenario 1
Iteration creation rate = **15/s** Iteration creation rate = **15/s**
```txt ```txt
checks.........................: 100.00% 39525 out of 39525 checks.........................: 100.00% 28764 out of 28764
data_received..................: 324 MB 5.2 MB/s data_received..................: 234 MB 3.7 MB/s
data_sent......................: 3.5 MB 56 kB/s data_sent......................: 2.6 MB 41 kB/s
dropped_iterations.............: 126 2.032659/s dropped_iterations.............: 336 5.300365/s
http_req_blocked...............: avg=22.84µs min=258ns med=1.01µs max=41.9ms p(90)=1.45µs p(95)=1.6µs http_req_blocked...............: avg=39.99µs min=242ns med=669ns max=68.16ms p(90)=1.14µs p(95)=1.32µs
http_req_connecting............: avg=1.32µs min=0s med=0s max=3.49ms p(90)=0s p(95)=0s http_req_connecting............: avg=1.66µs min=0s med=0s max=3.75ms p(90)=0s p(95)=0s
http_req_duration..............: avg=69.4ms min=6.28ms med=62.49ms max=323.87ms p(90)=131.32ms p(95)=147.63ms http_req_duration..............: avg=103.18ms min=6.22ms med=101.32ms max=452.09ms p(90)=139.92ms p(95)=157.15ms
{ expected_response:true }...: avg=69.4ms min=6.28ms med=62.49ms max=323.87ms p(90)=131.32ms p(95)=147.63ms { expected_response:true }...: avg=103.18ms min=6.22ms med=101.32ms max=452.09ms p(90)=139.92ms p(95)=157.15ms
http_req_failed................: 0.00% 0 out of 39525 http_req_failed................: 0.00% 0 out of 28764
http_req_receiving.............: avg=410.93µs min=24.46µs med=281.1µs max=17.76ms p(90)=784.35µs p(95)=1.12ms http_req_receiving.............: avg=460.02µs min=28.21µs med=334.44µs max=18.75ms p(90)=862.97µs p(95)=1.19ms
http_req_sending...............: avg=121.75µs min=14.48µs med=105.29µs max=11.05ms p(90)=179.47µs p(95)=221.68µs http_req_sending...............: avg=93.58µs min=21.19µs med=79.76µs max=3.26ms p(90)=141.54µs p(95)=167.69µs
http_req_tls_handshaking.......: avg=19.44µs min=0s med=0s max=28.07ms p(90)=0s p(95)=0s http_req_tls_handshaking.......: avg=35.6µs min=0s med=0s max=28.74ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=68.87ms min=5.63ms med=61.98ms max=323.69ms p(90)=130.68ms p(95)=147ms http_req_waiting...............: avg=102.63ms min=5.98ms med=100.76ms max=451.57ms p(90)=139.32ms p(95)=156.56ms
http_reqs......................: 39525 637.625912/s http_reqs......................: 28764 453.749133/s
iteration_duration.............: avg=3.57s min=822.25ms med=3.74s max=5.09s p(90)=4.25s p(95)=4.37s iteration_duration.............: avg=5.28s min=1.61s med=5.38s max=6.19s p(90)=5.71s p(95)=5.79s
iterations.....................: 775 12.502469/s iterations.....................: 564 8.897042/s
vus............................: 1 min=1 max=50 vus............................: 17 min=15 max=50
vus_max........................: 50 min=50 max=50 vus_max........................: 50 min=50 max=50
``` ```
@ -1065,13 +1063,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Req/s', label: 'Req/s',
data: [ data: [
30, 575, 674, 684, 617, 668, 634, 638, 647, 50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
621, 662, 661, 670, 659, 617, 672, 644, 653, 447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
623, 606, 663, 650, 634, 666, 625, 652, 650, 449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
671, 651, 617, 598, 620, 624, 626, 602, 657, 439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
646, 649, 650, 638, 669, 640, 639, 636, 628, 439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
636, 654, 651, 668, 643, 663, 645, 644, 618, 444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
575, 627, 622, 660, 643, 644, 637, 626, 413 444, 452, 432, 374, 1
] ]
} }
] ]
@ -1086,12 +1084,12 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'VUs', label: 'VUs',
data: [ data: [
13, 18, 20, 24, 29, 33, 38, 41, 49, 47, 49, 49, 15, 27, 39, 50, 50, 50, 49, 48, 48, 50, 50, 50,
46, 49, 49, 50, 42, 47, 49, 50, 50, 48, 50, 49, 48, 46, 49, 50, 48, 49, 49, 50, 50, 50, 49, 48,
48, 46, 45, 50, 50, 49, 49, 50, 50, 47, 47, 48, 47, 48, 50, 47, 48, 50, 47, 50, 50, 48, 46, 49,
50, 48, 50, 46, 49, 50, 50, 49, 50, 48, 47, 49, 50, 50, 50, 49, 48, 50, 48, 49, 50, 50, 49, 44,
49, 48, 50, 49, 50, 49, 49, 48, 46, 48, 49, 49, 49, 49, 49, 48, 50, 48, 50, 50, 47, 50, 49, 50,
34, 1 45, 37, 17
] ]
} }
] ]
@ -1102,12 +1100,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Duration (ms)', label: 'Duration (ms)',
data: [ data: [
19, 17, 24, 27, 36, 41, 48, 57, 64, 73, 71, 75, 21, 34, 77, 93, 102, 110, 107, 104, 105, 109,
73, 71, 76, 72, 77, 67, 70, 80, 73, 75, 74, 75, 112, 106, 105, 103, 106, 107, 106, 103, 103, 102,
78, 76, 73, 69, 74, 80, 79, 78, 78, 77, 81, 71, 108, 103, 102, 107, 103, 109, 106, 106, 107, 108,
74, 74, 75, 75, 71, 72, 76, 76, 78, 74, 72, 76, 112, 103, 103, 111, 105, 107, 105, 104, 107, 107,
71, 75, 70, 75, 75, 79, 84, 78, 77, 72, 74, 76, 115, 103, 108, 103, 107, 108, 105, 102, 101, 104,
74, 64, 27 112, 102, 105, 104, 105, 110, 104, 106, 108, 105,
111, 102, 85, 47, 8
] ]
} }
] ]
@ -1121,10 +1120,10 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.09, 0.72, 0.72, 0.02, 0.02, 0.1, 0.74,
0.76, 0.76, 0.75, 0.75, 0.78, 0.77, 0.79, 0.79,
0.75, 0.75, 0.76, 0.77, 0.78, 0.78, 0.78, 0.78,
0.78, 0.78, 0.17, 0.02, 0.78, 0.77, 0.78, 0.36,
0.02, 0.02, 0.02 0.02, 0.02, 0.02
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
@ -1134,10 +1133,10 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.01, 0.04, 0.22, 0.21, 0.01, 0.01, 0.04, 0.2,
0.22, 0.23, 0.22, 0.22, 0.21, 0.21, 0.21, 0.2,
0.22, 0.22, 0.21, 0.23, 0.21, 0.21, 0.21, 0.21,
0.22, 0.22, 0.06, 0.01, 0.21, 0.22, 0.21, 0.1,
0.02, 0.01, 0.01 0.02, 0.01, 0.01
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
@ -1152,11 +1151,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.04, 0.32, 0.33, 0.02, 0.02, 0.37, 0.5,
0.34, 0.34, 0.34, 0.35, 0.5, 0.49, 0.48, 0.5,
0.34, 0.33, 0.34, 0.33, 0.49, 0.5, 0.49, 0.5,
0.34, 0.35, 0.11, 0.02, 0.49, 0.5, 0.41, 0.02,
0.02, 0.02, 0.02 0.03, 0.02, 0.02
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
backgroundColor: '#4bc0c0', backgroundColor: '#4bc0c0',
@ -1165,11 +1164,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.03, 0.03, 0.16, 0.2, 0.02, 0.02, 0.33, 0.34,
0.19, 0.2, 0.21, 0.23, 0.34, 0.33, 0.32, 0.35,
0.23, 0.19, 0.22, 0.18, 0.34, 0.35, 0.36, 0.33,
0.23, 0.2, 0.07, 0.02, 0.32, 0.36, 0.33, 0.02,
0.02, 0.03, 0.03 0.02, 0.02, 0.02
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
backgroundColor: '#ff6384', backgroundColor: '#ff6384',
@ -1186,24 +1185,24 @@ vus_max........................: 50 min=50 max=50
Iteration creation rate = **2/s** Iteration creation rate = **2/s**
```txt ```txt
checks.........................: 67.75% 35254 out of 52029 checks.........................: 100.00% 72770 out of 72770
data_received..................: 92 MB 1.0 MB/s data_received..................: 145 MB 1.6 MB/s
data_sent......................: 3.8 MB 42 kB/s data_sent......................: 5.5 MB 61 kB/s
dropped_iterations.............: 70 0.777606/s dropped_iterations.............: 66 0.733176/s
http_req_blocked...............: avg=23.08µs min=232ns med=s max=103.63ms p(90)=1.42µs p(95)=1.56µs http_req_blocked...............: avg=14.03µs min=198ns med=645ns max=144.52ms p(90)=1.11µs p(95)=1.27µs
http_req_connecting............: avg=977ns min=0s med=0s max=5.29ms p(90)=0s p(95)=0s http_req_connecting............: avg=629ns min=0s med=0s max=5.17ms p(90)=0s p(95)=0s
http_req_duration..............: avg=74.22ms min=3.71ms med=57.69ms max=366.12ms p(90)=157.54ms p(95)=180.86ms http_req_duration..............: avg=50.94ms min=3.78ms med=38.97ms max=384.02ms p(90)=107.46ms p(95)=136.98ms
{ expected_response:true }...: avg=68.87ms min=3.71ms med=52.82ms max=366.12ms p(90)=147.21ms p(95)=170.41ms { expected_response:true }...: avg=50.94ms min=3.78ms med=38.97ms max=384.02ms p(90)=107.46ms p(95)=136.98ms
http_req_failed................: 32.24% 16775 out of 52029 http_req_failed................: 0.00% 0 out of 72770
http_req_receiving.............: avg=237.94µs min=18.29µs med=130.97µs max=11.5ms p(90)=498.83µs p(95)=758.8µs http_req_receiving.............: avg=200.09µs min=18.28µs med=107.44µs max=18.54ms p(90)=399.04µs p(95)=632µs
http_req_sending...............: avg=116.57µs min=16.04µs med=104.78µs max=5.81ms p(90)=174.59µs p(95)=212.82µs http_req_sending...............: avg=86.57µs min=16.71µs med=73.65µs max=13.95ms p(90)=132.89µs p(95)=158.51µs
http_req_tls_handshaking.......: avg=19.29µs min=0s med=0s max=27.95ms p(90)=0s p(95)=0s http_req_tls_handshaking.......: avg=10.86µs min=0s med=0s max=28.74ms p(90)=0s p(95)=0s
http_req_waiting...............: avg=73.86ms min=3.02ms med=57.38ms max=365.81ms p(90)=157.13ms p(95)=180.31ms http_req_waiting...............: avg=50.66ms min=3.64ms med=38.7ms max=383.81ms p(90)=107.11ms p(95)=136.61ms
http_reqs......................: 52029 577.972273/s http_reqs......................: 72770 808.381614/s
iteration_duration.............: avg=1m26s min=1m26s med=1m26s max=1m26s p(90)=1m26s p(95)=1m26s iteration_duration.............: avg=1m6s min=49.42s med=1m8s max=1m19s p(90)=1m18s p(95)=1m18s
iterations.....................: 3 0.033326/s iterations.....................: 18 0.199957/s
vus............................: 47 min=2 max=50 vus............................: 37 min=2 max=50
vus_max........................: 50 min=50 max=50 vus_max........................: 50 min=50 max=50
``` ```
{{< tabs >}} {{< tabs >}}
@ -1214,15 +1213,14 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Req/s', label: 'Req/s',
data: [ data: [
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577, 734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613, 786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612, 798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577, 808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603, 787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575, 821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620, 781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578, 790, 791, 791, 830, 815, 835, 832, 583
599, 585, 113
] ]
} }
] ]
@ -1237,14 +1235,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'VUs', label: 'VUs',
data: [ data: [
2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49, 49, 48, 48, 48, 48, 47, 47, 46,
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 46, 46, 45, 44, 44, 44, 44, 43, 43, 42, 42, 40,
50, 50, 48, 47, 47, 47 40, 39, 38, 37, 37, 37
] ]
} }
] ]
@ -1255,14 +1252,13 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'Duration (ms)', label: 'Duration (ms)',
data: [ data: [
28, 11, 11, 14, 16, 21, 21, 25, 28, 30, 36, 37, 29, 30, 37, 38, 39, 44, 43, 53, 49, 53, 58, 61,
40, 50, 50, 56, 55, 58, 64, 67, 73, 71, 75, 83, 61, 54, 57, 62, 62, 62, 61, 62, 61, 61, 65, 59,
79, 84, 83, 83, 88, 81, 89, 82, 81, 86, 83, 89, 60, 66, 59, 65, 61, 62, 62, 63, 65, 63, 60, 60,
81, 85, 87, 80, 88, 82, 81, 88, 84, 83, 84, 86, 61, 63, 59, 60, 62, 64, 65, 60, 63, 65, 59, 64,
86, 84, 83, 85, 86, 84, 81, 85, 81, 86, 88, 83, 59, 60, 61, 62, 62, 58, 59, 60, 53, 60, 57, 58,
86, 85, 83, 91, 86, 87, 86, 85, 85, 80, 84, 85, 57, 57, 61, 53, 50, 53, 51, 56, 54, 46, 54, 50,
83, 84, 85, 85, 82, 83, 85, 84, 84, 86, 84, 84, 51, 48, 47, 45, 45, 50
84, 82, 86, 81, 81, 79, 80
] ]
} }
] ]
@ -1276,11 +1272,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.03, 0.53, 0.76, 0.51, 0.71, 0.76, 0.7,
0.8, 0.81, 0.83, 0.83, 0.72, 0.72, 0.74, 0.77,
0.83, 0.83, 0.83, 0.83, 0.72, 0.73, 0.75, 0.74,
0.8, 0.75, 0.83, 0.8, 0.73, 0.78, 0.77, 0.66,
0.83, 0.8, 0.75 0.76, 0.6, 0.02
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
backgroundColor: '#4bc0c0', backgroundColor: '#4bc0c0',
@ -1289,11 +1285,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.02, 0.02, 0.12, 0.17, 0.15, 0.2, 0.2, 0.18,
0.17, 0.17, 0.17, 0.17, 0.19, 0.18, 0.19, 0.2,
0.17, 0.17, 0.17, 0.17, 0.19, 0.19, 0.19, 0.19,
0.17, 0.16, 0.17, 0.17, 0.19, 0.19, 0.18, 0.17,
0.17, 0.17, 0.16 0.2, 0.16, 0.01
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
backgroundColor: '#ff6384', backgroundColor: '#ff6384',
@ -1307,11 +1303,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'User', label: 'User',
data: [ data: [
0.02, 0.02, 0.17, 0.26, 0.42, 0.47, 0.48, 0.51,
0.24, 0.21, 0.22, 0.21, 0.51, 0.52, 0.49, 0.52,
0.22, 0.23, 0.22, 0.22, 0.52, 0.52, 0.51, 0.53,
0.22, 0.23, 0.22, 0.22, 0.51, 0.52, 0.49, 0.5,
0.23, 0.22, 0.22 0.52, 0.12, 0.03
], ],
borderColor: '#4bc0c0', borderColor: '#4bc0c0',
backgroundColor: '#4bc0c0', backgroundColor: '#4bc0c0',
@ -1320,11 +1316,11 @@ vus_max........................: 50 min=50 max=50
{ {
label: 'System', label: 'System',
data: [ data: [
0.02, 0.02, 0.13, 0.21, 0.15, 0.29, 0.37, 0.44,
0.24, 0.26, 0.26, 0.22, 0.43, 0.46, 0.42, 0.47,
0.23, 0.26, 0.24, 0.26, 0.47, 0.45, 0.46, 0.46,
0.26, 0.25, 0.26, 0.26, 0.41, 0.46, 0.39, 0.39,
0.26, 0.26, 0.26 0.42, 0.11, 0.02
], ],
borderColor: '#ff6384', borderColor: '#ff6384',
backgroundColor: '#ff6384', backgroundColor: '#ff6384',
@ -2292,13 +2288,13 @@ Here are the final req/s results for each framework against PgSQL database.
borderColor: "#0f766e", borderColor: "#0f766e",
backgroundColor: "#0f766e", backgroundColor: "#0f766e",
data: [ data: [
30, 575, 674, 684, 617, 668, 634, 638, 647, 50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
621, 662, 661, 670, 659, 617, 672, 644, 653, 447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
623, 606, 663, 650, 634, 666, 625, 652, 650, 449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
671, 651, 617, 598, 620, 624, 626, 602, 657, 439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
646, 649, 650, 638, 669, 640, 639, 636, 628, 439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
636, 654, 651, 668, 643, 663, 645, 644, 618, 444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
575, 627, 622, 660, 643, 644, 637, 626, 413 444, 452, 432, 374, 1
], ],
}, },
{ {
@ -2389,15 +2385,14 @@ Here are the final req/s results for each framework against PgSQL database.
borderColor: "#0f766e", borderColor: "#0f766e",
backgroundColor: "#0f766e", backgroundColor: "#0f766e",
data: [ data: [
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577, 734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613, 786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612, 798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577, 808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603, 787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575, 821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620, 781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578, 790, 791, 791, 830, 815, 835, 832, 583
599, 585, 113
], ],
}, },
{ {