Adobe Commerce HEAD.com real-life Performace use-case vs. Open Source Magento fork.

Yegor Shytikov
6 min readFeb 4, 2024

I contacted a company to independently check Magento’s performance, aiming to avoid any agency scams. I was eager to test the potential gains in Magento’s performance. What I observed was astonishing. Every Magento 2 website tends to be slow, but this particular one, Head.com, is the epitome of sluggish websites.

“Agile performance optimizations make e-commerce platforms fit for the future.”

So, let's check agile performance optimization from the top Magento agencies. As we can see, the site is still using Belarusian Magento extensions and sponsoring Russian terrorism. You need to remember that there is no business with Russia or Belarus.

For the test, we are using the K6 performance toolkit for Magento.k6 is a modern performance-testing tool built on years of experience in the performance and testing industries. As a performance testing framework, k6 stands out because of the way it encapsulates usability and performance.

Category Page Magento 2 performance:

INFO[0036] Tested URL: https://www.head.com/en_US/sportswear/winter/women.html  source=console


data_received..................: 5.2 MB 145 kB/s
data_sent......................: 36 kB 998 B/s
http_req_blocked...............: min=265ns med=457ns avg=68.97ms max=689.73ms p(95)=379.35ms p(85)=1.19µs
http_req_connecting............: min=0s med=0s avg=21.2ms max=212ms p(95)=116.6ms p(85)=0s
http_req_duration..............: min=2.44s med=3.29s avg=3.51s max=5.41s p(95)=5.2s p(85)=4.47s
{ expected_response:true }...: min=2.44s med=3.29s avg=3.51s max=5.41s p(95)=5.2s p(85)=4.47s
http_req_failed................: 0.00% ✓ 0 ✗ 10
http_req_receiving.............: min=94.81ms med=108.95ms avg=173.98ms max=763.39ms p(95)=476.69ms p(85)=124.36ms
http_req_sending...............: min=75.64µs med=93.29µs avg=183.12µs max=929.76µs p(95)=578.28µs p(85)=148.39µs
http_req_tls_handshaking.......: min=0s med=0s avg=35.07ms max=350.76ms p(95)=192.92ms p(85)=0s
http_req_waiting...............: min=2.35s med=3.17s avg=3.33s max=4.84s p(95)=4.75s p(85)=4.23s
http_reqs......................: 10 0.279225/s
iteration_duration.............: min=134.06µs med=3.09s avg=2.98s max=6.1s p(95)=5.47s p(85)=4.06s
iterations.....................: 10 0.279225/s
vus............................: 1 min=1 max=1
vus_max........................: 1 min=1 max=1


running (00m35.8s), 0/1 VUs, 10 complete and 0 interrupted iterations

Result: just to generate a category page without the load (1 user), it took 4.23 seconds when Google's recommended time was 800ms. According to Google, most websites should strive for a server page generation speed of 800ms or less.

Let's check 20 users per page load:

INFO[0008] Tested URL: https://www.head.com/en_US/sportswear/winter/women.html  source=console


data_received..................: 10 MB 1.3 MB/s
data_sent......................: 82 kB 10 kB/s
http_req_blocked...............: min=1.43s med=1.44s avg=1.44s max=1.45s p(95)=1.45s p(85)=1.45s
http_req_connecting............: min=165.8ms med=175.85ms avg=175.07ms max=183.68ms p(95)=181.15ms p(85)=179.28ms
http_req_duration..............: min=4.91s med=6.17s avg=6.04s max=6.53s p(95)=6.53s p(85)=6.51s
{ expected_response:true }...: min=4.91s med=6.17s avg=6.04s max=6.53s p(95)=6.53s p(85)=6.51s
http_req_failed................: 0.00% ✓ 0 ✗ 20
http_req_receiving.............: min=1.38s med=2.02s avg=1.93s max=2.21s p(95)=2.15s p(85)=2.14s
http_req_sending...............: min=156.12µs med=299.14µs avg=348.1µs max=789.5µs p(95)=562.95µs p(85)=460.76µs
http_req_tls_handshaking.......: min=403.91ms med=406.88ms avg=407.6ms max=413.16ms p(95)=412.61ms p(85)=411.38ms
http_req_waiting...............: min=3.52s med=4.06s avg=4.11s max=4.92s p(95)=4.85s p(85)=4.65s
http_reqs......................: 20 2.503785/s
iteration_duration.............: min=193.62µs med=7.52s avg=6.81s max=7.98s p(95)=7.98s p(85)=7.95s
iterations.....................: 20 2.503785/s
vus............................: 16 min=16 max=20
vus_max........................: 20 min=20 max=20


running (00m08.0s), 00/20 VUs, 20 complete and 0 interrupted iterations

Result: under the slight load performance of the category, page generation is 6.5 seconds. So, even slight traffic can kill this website.

Head.com Product Page generation performance:

INFO[0023] Tested URL: https://www.head.com/en_US/revolt-pro-4-5-women-bblb-274204.html  source=console

data_received..................: 1.7 MB 74 kB/s
data_sent......................: 12 kB 532 B/s
http_req_blocked...............: min=577ns med=736ns avg=117.59ms max=587.98ms p(95)=470.39ms p(85)=235.19ms
http_req_connecting............: min=0s med=0s avg=32.92ms max=164.61ms p(95)=131.69ms p(85)=65.84ms
http_req_duration..............: min=3.85s med=4.28s avg=4.52s max=5.8s p(95)=5.52s p(85)=4.96s
{ expected_response:true }...: min=3.85s med=4.28s avg=4.52s max=5.8s p(95)=5.52s p(85)=4.96s
http_req_failed................: 0.00% ✓ 0 ✗ 5
http_req_receiving.............: min=75.62ms med=90.31ms avg=199.39ms max=570.9ms p(95)=491.79ms p(85)=333.58ms
http_req_sending...............: min=107.92µs med=119.8µs avg=289.35µs max=982.12µs p(95)=809.75µs p(85)=465µs
http_req_tls_handshaking.......: min=0s med=0s avg=70.59ms max=352.97ms p(95)=282.38ms p(85)=141.19ms
http_req_waiting...............: min=3.77s med=4.19s avg=4.32s max=5.23s p(95)=5.03s p(85)=4.63s
http_reqs......................: 5 0.215391/s
iteration_duration.............: min=162.07µs med=4.26s avg=3.31s max=6.39s p(95)=5.8s p(85)=4.6s
iterations.....................: 5 0.215391/s
vus............................: 1 min=1 max=1
vus_max........................: 1 min=1 max=1


running (00m23.2s), 0/1 VUs, 5 complete and 0 interrupted iterations

Result: a single product page generation time is 4.96 (almost 5) seconds.

Let's measure the performance under a slight load of 20 users per page.

20 users per product page performance

INFO[0010] Tested URL: https://www.head.com/en_US/revolt-pro-4-5-women-bblb-274204.html  source=console


data_received..................: 6.9 MB 707 kB/s
data_sent......................: 59 kB 6.0 kB/s
http_req_blocked...............: min=959.73ms med=983.63ms avg=981.09ms max=999.48ms p(95)=994.73ms p(85)=991.15ms
http_req_connecting............: min=169.57ms med=189ms avg=186.12ms max=196.1ms p(95)=195.74ms p(85)=194.63ms
http_req_duration..............: min=5.78s med=7.89s avg=7.61s max=8.82s p(95)=8.53s p(85)=8.48s
{ expected_response:true }...: min=5.78s med=7.89s avg=7.61s max=8.82s p(95)=8.53s p(85)=8.48s
http_req_failed................: 0.00% ✓ 0 ✗ 20
http_req_receiving.............: min=507.69ms med=544.16ms avg=585.58ms max=905.4ms p(95)=793.77ms p(85)=617.57ms
http_req_sending...............: min=109.15µs med=204.59µs avg=237.78µs max=557.17µs p(95)=428.47µs p(85)=302.35µs
http_req_tls_handshaking.......: min=383.86ms med=397.8ms avg=397.13ms max=405.82ms p(95)=404.91ms p(85)=400.57ms
http_req_waiting...............: min=5s med=7.35s avg=7.02s max=8.27s p(95)=8.02s p(85)=7.91s
http_reqs......................: 20 2.037474/s
iteration_duration.............: min=565.21µs med=8.79s avg=7.81s max=9.81s p(95)=9.51s p(85)=9.47s
iterations.....................: 20 2.037474/s
vus............................: 8 min=8 max=20
vus_max........................: 20 min=20 max=20


running (00m09.8s), 00/20 VUs, 20 complete and 0 interrupted iterations
default ✓ [======================================] 20 VUs 00m09.8s/10m0s 20/20 shared iters

Result: Product page generation time under simultaneous 20-user traffic is 8.48 seconds. Pretty disgusting!

As we can see, the performance of the “agile performance optimized” Magento eCommerce is sucks, and the Hyva theme can’t fix it! When the back is extremely slow, the front-end theme doesn’t matter much! From our experience, only simple Magento websites can achieve 1 second page generation time, while a complex website is always slow.

Many Magento developers will tell you Magento was always slow. However, I can’t agree with one Fortune 500 client of mine running a highly loaded Magento website on Magento 1 MageOne fork. The site is not even optimized, but it works great.

Let's check the generation time for the product page :

INFO[0003] Tested URL: ***

data_received..................: 1.4 MB 513 kB/s
data_sent......................: 9.5 kB 3.5 kB/s
http_req_blocked...............: min=250ns med=718ns avg=9.21ms max=92.1ms p(95)=50.65ms p(85)=1.21µs
http_req_connecting............: min=0s med=0s avg=4.16ms max=41.63ms p(95)=22.89ms p(85)=0s
http_req_duration..............: min=236.36ms med=248.22ms avg=258.85ms max=310.95ms p(95)=304.29ms p(85)=285.98ms
{ expected_response:true }...: min=236.36ms med=248.22ms avg=258.85ms max=310.95ms p(95)=304.29ms p(85)=285.98ms
http_req_failed................: 0.00% ✓ 0 ✗ 10
http_req_receiving.............: min=23.92ms med=30.23ms avg=32.25ms max=50.56ms p(95)=44.92ms p(85)=37.52ms
http_req_sending...............: min=89.29µs med=134.96µs avg=168.72µs max=502.8µs p(95)=354.4µs p(85)=170.95µs
http_req_tls_handshaking.......: min=0s med=0s avg=2.78ms max=27.88ms p(95)=15.33ms p(85)=0s
http_req_waiting...............: min=204.86ms med=218.12ms avg=226.42ms max=278.64ms p(95)=263.69ms p(85)=243.48ms
http_reqs......................: 10 3.71112/s
iteration_duration.............: min=139.83µs med=246.31ms avg=224.42ms max=360.07ms p(95)=333.61ms p(85)=302.75ms
iterations.....................: 10 3.71112/s
vus............................: 1 min=1 max=1
vus_max........................: 1 min=1 max=1


running (00m02.7s), 0/1 VUs, 10 complete and 0 interrupted iterations
default ✓ [======================================] 1 VUs 00m02.7s/10m0s 10/10 shared iters

The Result Page generation time was 285.98 ms vs. 5 seconds of Magento 2 implementation. So, Magento 2 is 16 times slower than M1.

This merchant working under migration to Shopify. Not because he is not satisfied with OpenMage, but because he wants something better, but not Adobe Commerce cap.

Let's check the category page generation time.

NFO[0004] Tested URL: ***

data_received..................: 2.4 MB 704 kB/s
data_sent......................: 16 kB 4.5 kB/s
http_req_blocked...............: min=263ns med=920ns avg=6.21ms max=62.15ms p(95)=34.18ms p(85)=1.08µs
http_req_connecting............: min=0s med=0s avg=2.81ms max=28.16ms p(95)=15.49ms p(85)=0s
http_req_duration..............: min=300.96ms med=325.65ms avg=337.81ms max=406.54ms p(95)=397.81ms p(85)=377.71ms
{ expected_response:true }...: min=300.96ms med=325.65ms avg=337.81ms max=406.54ms p(95)=397.81ms p(85)=377.71ms
http_req_failed................: 0.00% ✓ 0 ✗ 10
http_req_receiving.............: min=49.45ms med=54.72ms avg=57.41ms max=71.2ms p(95)=69.91ms p(85)=65.37ms
http_req_sending...............: min=104.14µs med=133.31µs avg=174.41µs max=458.29µs p(95)=357.52µs p(85)=206.98µs
http_req_tls_handshaking.......: min=0s med=0s avg=2.81ms max=28.15ms p(95)=15.48ms p(85)=0s
http_req_waiting...............: min=246.71ms med=268.51ms avg=280.22ms max=352.11ms p(95)=335.77ms p(85)=310.33ms
http_reqs......................: 10 2.893856/s
iteration_duration.............: min=169.38µs med=324.53ms avg=287.8ms max=469.71ms p(95)=424.88ms p(85)=370.83ms
iterations.....................: 10 2.893856/s
vus............................: 1 min=1 max=1
vus_max........................: 1 min=1 max=1


running (00m03.5s), 0/1 VUs, 10 complete and 0 interrupted iterations
default ✓ [======================================] 1 VUs 00m03.5s/10m0s 10/10 shared iters

Result: OpenMage category generation time is 310.33 ms. vs 4.23 seconds Adobe Commerce.

So we can see the only performant version of magento is MageOne. And Hyva Theme will not fix the Magento 2 failed state. It is the same slow PHP core but a slightly faster but weird front end. MageOne has a good microservice Backend and a better frontend.

Check out the best magento fork and it is not a Magento 2 fork:

--

--

Yegor Shytikov

True Stories about Magento 2. Melting down metal server infrastructure into cloud solutions.