diff --git a/content/posts/22-web-api-benchmarks-2024/index.md b/content/posts/22-web-api-benchmarks-2024/index.md index b860a8e..bec96ba 100644 --- a/content/posts/22-web-api-benchmarks-2024/index.md +++ b/content/posts/22-web-api-benchmarks-2024/index.md @@ -543,7 +543,7 @@ Laravel Octane will be enabled with FrankenPHP runtime. #### Laravel MySQL scenario 1 -Iteration creation rate = **5/s** +Iteration creation rate = **10/s** ```txt checks.........................: 100.00% ✓ 7548 ✗ 0 @@ -851,26 +851,27 @@ This is where Laravel Octane really shines, previously we had less than 300 req/ #### Laravel PgSQL scenario 1 -Iteration creation rate = **5/s** +Iteration creation rate = **10/s** ```txt -checks.........................: 100.00% ✓ 15351 ✗ 0 -data_received..................: 164 MB 2.7 MB/s -data_sent......................: 1.4 MB 22 kB/s -http_req_blocked...............: avg=92.69µs min=244ns med=1.05µs max=58.08ms p(90)=1.51µs p(95)=1.69µs -http_req_connecting............: avg=4.66µs min=0s med=0s max=5.16ms p(90)=0s p(95)=0s -http_req_duration..............: avg=18.51ms min=4.14ms med=16.47ms max=428.74ms p(90)=25.07ms p(95)=30.62ms - { expected_response:true }...: avg=18.51ms min=4.14ms med=16.47ms max=428.74ms p(90)=25.07ms p(95)=30.62ms -http_req_failed................: 0.00% ✓ 0 ✗ 15351 -http_req_receiving.............: avg=907µs min=26.82µs med=486.27µs max=207.67ms p(90)=1.42ms p(95)=2.26ms -http_req_sending...............: avg=205.9µs min=27.86µs med=123.52µs max=70.97ms p(90)=214.68µs p(95)=314.53µs -http_req_tls_handshaking.......: avg=84.14µs min=0s med=0s max=43.29ms p(90)=0s p(95)=0s -http_req_waiting...............: avg=17.4ms min=0s med=15.58ms max=428.19ms p(90)=23.57ms p(95)=28.49ms -http_reqs......................: 15351 251.56363/s -iteration_duration.............: avg=1s min=777.67ms med=944.47ms max=1.71s p(90)=1.25s p(95)=1.37s -iterations.....................: 301 4.93262/s -vus............................: 1 min=1 max=8 -vus_max........................: 50 min=50 max=50 +checks.........................: 100.00% ✓ 22542 ✗ 0 +data_received..................: 241 MB 3.8 MB/s +data_sent......................: 2.0 MB 31 kB/s +dropped_iterations.............: 159 2.509297/s +http_req_blocked...............: avg=98.83µs min=214ns med=955ns max=190.07ms p(90)=1.48µs p(95)=1.68µs +http_req_connecting............: avg=9µs min=0s med=0s max=71.9ms p(90)=0s p(95)=0s +http_req_duration..............: avg=127.36ms min=4ms med=82.05ms max=644.29ms p(90)=247.64ms p(95)=269.15ms + { expected_response:true }...: avg=127.36ms min=4ms med=82.05ms max=644.29ms p(90)=247.64ms p(95)=269.15ms +http_req_failed................: 0.00% ✓ 0 ✗ 22542 +http_req_receiving.............: avg=938.08µs min=26.46µs med=340.84µs max=212.74ms p(90)=1.26ms p(95)=2.26ms +http_req_sending...............: avg=212.82µs min=14.12µs med=110.91µs max=67.83ms p(90)=202.2µs p(95)=308.11µs +http_req_tls_handshaking.......: avg=80.92µs min=0s med=0s max=124.88ms p(90)=0s p(95)=0s +http_req_waiting...............: avg=126.21ms min=0s med=80.18ms max=643.75ms p(90)=246.31ms p(95)=267.53ms +http_reqs......................: 22542 355.752049/s +iteration_duration.............: avg=6.55s min=2.25s med=6.66s max=9.52s p(90)=7.88s p(95)=8.26s +iterations.....................: 442 6.97553/s +vus............................: 15 min=10 max=50 +vus_max........................: 50 min=50 max=50 ``` {{< tabs >}} @@ -881,13 +882,14 @@ vus_max........................: 50 min=50 max=50 { label: 'Req/s', data: [ - 68, 243, 275, 268, 243, 277, 229, 261, 255, - 263, 270, 245, 261, 258, 227, 281, 242, 238, - 279, 257, 249, 248, 235, 281, 255, 259, 227, - 239, 296, 256, 265, 248, 240, 276, 244, 266, - 244, 273, 243, 256, 239, 213, 222, 285, 255, - 297, 242, 249, 282, 264, 269, 235, 273, 253, - 245, 265, 210, 281, 276, 242, 203, 11 + 48, 263, 335, 331, 355, 373, 373, 376, 379, + 359, 383, 382, 386, 388, 351, 387, 374, 367, + 378, 348, 396, 367, 352, 350, 324, 344, 388, + 346, 330, 368, 383, 376, 383, 372, 350, 391, + 380, 365, 367, 340, 380, 375, 381, 383, 354, + 380, 382, 384, 372, 345, 379, 342, 370, 357, + 321, 304, 306, 275, 301, 318, 360, 360, 365, + 240 ] } ] @@ -902,12 +904,12 @@ vus_max........................: 50 min=50 max=50 { label: 'VUs', data: [ - 5, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 4, - 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 5, 4, - 4, 4, 6, 6, 4, 4, 3, 4, 5, 4, 4, 4, - 5, 4, 4, 4, 5, 7, 8, 7, 6, 5, 5, 5, - 5, 4, 4, 4, 4, 4, 4, 4, 6, 5, 4, 4, - 1 + 10, 20, 26, 32, 38, 42, 49, 50, 47, 50, 48, 49, + 46, 49, 49, 50, 48, 50, 49, 46, 45, 49, 50, 47, + 50, 50, 48, 50, 48, 49, 50, 49, 50, 48, 48, 47, + 48, 50, 46, 48, 49, 50, 50, 48, 49, 47, 47, 48, + 50, 50, 48, 50, 47, 48, 50, 50, 50, 48, 49, 50, + 43, 25, 15 ] } ] @@ -918,12 +920,13 @@ vus_max........................: 50 min=50 max=50 { label: 'Duration (ms)', data: [ - 22, 21, 19, 16, 17, 17, 19, 18, 17, 17, 16, 16, - 17, 16, 20, 18, 17, 20, 18, 16, 18, 18, 22, 19, - 17, 18, 20, 25, 19, 17, 16, 17, 19, 17, 17, 17, - 17, 16, 18, 16, 19, 23, 29, 27, 27, 21, 18, 24, - 19, 17, 16, 18, 16, 16, 17, 16, 21, 20, 16, 16, - 16, 25 + 38, 40, 59, 75, 89, 100, 115, 129, 128, 133, + 125, 129, 127, 122, 137, 129, 130, 134, 127, 143, + 117, 121, 138, 142, 147, 146, 129, 139, 143, 134, + 127, 131, 127, 131, 141, 124, 126, 130, 140, 138, + 130, 130, 130, 128, 138, 127, 123, 125, 132, 141, + 132, 140, 134, 131, 147, 162, 160, 157, 190, 156, + 133, 118, 69, 45 ] } ] @@ -937,11 +940,11 @@ vus_max........................: 50 min=50 max=50 { label: 'User', data: [ - 0.05, 0.03, 0.29, 0.45, - 0.44, 0.44, 0.47, 0.45, - 0.45, 0.46, 0.43, 0.5, - 0.46, 0.45, 0.22, 0.03, - 0.03, 0.03, 0.03 + 0.03, 0.03, 0.35, 0.72, + 0.7, 0.69, 0.69, 0.66, + 0.7, 0.68, 0.68, 0.67, + 0.66, 0.56, 0.62, 0.05, + 0.03, 0.02, 0.04 ], borderColor: '#4bc0c0', backgroundColor: '#4bc0c0', @@ -950,11 +953,11 @@ vus_max........................: 50 min=50 max=50 { label: 'System', data: [ - 0.03, 0.02, 0.06, 0.09, - 0.08, 0.1, 0.08, 0.08, - 0.09, 0.08, 0.07, 0.09, - 0.1, 0.09, 0.05, 0.02, - 0.02, 0.03, 0.02 + 0.01, 0.02, 0.07, 0.12, + 0.13, 0.12, 0.11, 0.11, + 0.12, 0.13, 0.12, 0.13, + 0.13, 0.1, 0.12, 0.02, + 0.01, 0.02, 0.02 ], borderColor: '#ff6384', backgroundColor: '#ff6384', @@ -968,11 +971,11 @@ vus_max........................: 50 min=50 max=50 { label: 'User', data: [ - 0.03, 0.02, 0.18, 0.17, - 0.19, 0.19, 0.2, 0.21, - 0.18, 0.2, 0.23, 0.18, - 0.17, 0.19, 0.07, 0.03, - 0.03, 0.03, 0.03 + 0.02, 0.02, 0.1, 0.22, + 0.22, 0.22, 0.21, 0.2, + 0.21, 0.23, 0.23, 0.22, + 0.22, 0.2, 0.21, 0.07, + 0.02, 0.03, 0.02 ], borderColor: '#4bc0c0', backgroundColor: '#4bc0c0', @@ -981,11 +984,11 @@ vus_max........................: 50 min=50 max=50 { label: 'System', data: [ - 0.02, 0.02, 0.12, 0.11, - 0.1, 0.09, 0.13, 0.12, - 0.11, 0.14, 0.14, 0.1, - 0.1, 0.13, 0.04, 0.02, - 0.02, 0.01, 0.02 + 0.02, 0.02, 0.07, 0.15, + 0.14, 0.13, 0.13, 0.13, + 0.15, 0.13, 0.13, 0.13, + 0.14, 0.13, 0.13, 0.04, + 0.02, 0.01, 0.01 ], borderColor: '#ff6384', backgroundColor: '#ff6384', @@ -997,7 +1000,7 @@ vus_max........................: 50 min=50 max=50 {{< /tab >}} {{< /tabs >}} -Way better than with MySQL but strangely no CPU limitations... +Way better than with MySQL. #### Laravel PgSQL scenario 2 @@ -3018,13 +3021,14 @@ Here are the final req/s results for each framework against PgSQL database. borderColor: '#c2410c', backgroundColor: '#c2410c', data: [ - 68, 243, 275, 268, 243, 277, 229, 261, 255, - 263, 270, 245, 261, 258, 227, 281, 242, 238, - 279, 257, 249, 248, 235, 281, 255, 259, 227, - 239, 296, 256, 265, 248, 240, 276, 244, 266, - 244, 273, 243, 256, 239, 213, 222, 285, 255, - 297, 242, 249, 282, 264, 269, 235, 273, 253, - 245, 265, 210, 281, 276, 242, 203, 11 + 48, 263, 335, 331, 355, 373, 373, 376, 379, + 359, 383, 382, 386, 388, 351, 387, 374, 367, + 378, 348, 396, 367, 352, 350, 324, 344, 388, + 346, 330, 368, 383, 376, 383, 372, 350, 391, + 380, 365, 367, 340, 380, 375, 381, 383, 354, + 380, 382, 384, 372, 345, 379, 342, 370, 357, + 321, 304, 306, 275, 301, 318, 360, 360, 365, + 240 ] }, {