**What** Improve serialization further on complex entities to reduce bottleneck. **Notes** It might good at some point to integrate these improvements into mikro orm package 📦 **Load test** The test is using autocanon and wrap the serializers call behind http end points. Each product has 2 variants, 3 options and 3 options values. autocanon is configured for 10 connections during 20 second and 1 pipelining. This is repeated for each configuration and each catch size. 🚀 Load Testing Serializers with Autocannon ================================================================================ ==================================================================================================== 🎯 TESTING 10 PRODUCTS ==================================================================================================== 🖥️ Server started on port 57840 📊 Testing with 10 products per request 🔥 Load testing: MikroOrm -------------------------------------------------- Requests/sec: 33.85 Avg Latency: 319.30ms P90 Latency: 327.00ms Throughput: 31.36 MB/s Errors: 0 🔥 Load testing: Current -------------------------------------------------- Requests/sec: 821.15 Avg Latency: 11.67ms P90 Latency: 12.00ms Throughput: 0.18 MB/s Errors: 0 🔥 Load testing: Optimized -------------------------------------------------- Requests/sec: 1286.75 Avg Latency: 7.25ms P90 Latency: 7.00ms Throughput: 37.31 MB/s Errors: 0 📈 Load Testing Performance Comparison for 10 products: -------------------------------------------------------------------------------------------------------------------------------------------- Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement -------------------------------------------------------------------------------------------------------------------------------------------- MikroOrm 33.85 319.30 327.00 31.36 0 baseline Current 821.15 11.67 12.00 0.18 0 24.3x Optimized 1286.75 7.25 7.00 37.31 0 38.0x 🎯 Key Insights for 10 products: • Optimized serializer handles 1.6x more requests/sec than Current • Optimized serializer handles 38.0x more requests/sec than MikroOrm • 37.9% lower latency compared to Current serializer 🔴 Server stopped for 10 products test ==================================================================================================== 🎯 TESTING 100 PRODUCTS ==================================================================================================== 🖥️ Server started on port 57878 📊 Testing with 100 products per request 🔥 Load testing: MikroOrm -------------------------------------------------- Requests/sec: 3.69 Avg Latency: 3241.29ms P90 Latency: 4972.00ms Throughput: 35.04 MB/s Errors: 0 🔥 Load testing: Current -------------------------------------------------- Requests/sec: 87.45 Avg Latency: 117.20ms P90 Latency: 116.00ms Throughput: 0.02 MB/s Errors: 0 🔥 Load testing: Optimized -------------------------------------------------- Requests/sec: 143.56 Avg Latency: 70.62ms P90 Latency: 72.00ms Throughput: 42.22 MB/s Errors: 0 📈 Load Testing Performance Comparison for 100 products: -------------------------------------------------------------------------------------------------------------------------------------------- Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement -------------------------------------------------------------------------------------------------------------------------------------------- MikroOrm 3.69 3241.29 4972.00 35.04 0 baseline Current 87.45 117.20 116.00 0.02 0 23.7x Optimized 143.56 70.62 72.00 42.22 0 38.9x 🎯 Key Insights for 100 products: • Optimized serializer handles 1.6x more requests/sec than Current • Optimized serializer handles 38.9x more requests/sec than MikroOrm • 39.7% lower latency compared to Current serializer 🔴 Server stopped for 100 products test ==================================================================================================== 🎯 TESTING 1,000 PRODUCTS ==================================================================================================== 🖥️ Server started on port 57930 📊 Testing with 1000 products per request 🔥 Load testing: MikroOrm -------------------------------------------------- Requests/sec: 0.00 Avg Latency: 0.00ms P90 Latency: 0.00ms Throughput: 0.00 MB/s Errors: 10 🔥 Load testing: Current -------------------------------------------------- Requests/sec: 0.00 Avg Latency: 0.00ms P90 Latency: 0.00ms Throughput: 0.00 MB/s Errors: 20 🔥 Load testing: Optimized -------------------------------------------------- Requests/sec: 13.79 Avg Latency: 792.94ms P90 Latency: 755.00ms Throughput: 41.47 MB/s Errors: 0 📈 Load Testing Performance Comparison for 1000 products: -------------------------------------------------------------------------------------------------------------------------------------------- Serializer Requests/sec Avg Latency (ms) P90 Latency (ms) Throughput (MB/s) Errors RPS Improvement -------------------------------------------------------------------------------------------------------------------------------------------- MikroOrm 0.00 0.00 0.00 0.00 10 NaNx Current 0.00 0.00 0.00 0.00 20 NaNx Optimized 13.79 792.94 755.00 41.47 0 Infinityx 🎯 Key Insights for 1000 products: • Optimized serializer handles Infinityx more requests/sec than Current • Optimized serializer handles Infinityx more requests/sec than MikroOrm • -Infinity% lower latency compared to Current serializer 🔴 Server stopped for 1000 products test ====================================================================================================================================================== 📊 COMPREHENSIVE AUTOCANNON LOAD TESTING ANALYSIS ====================================================================================================================================================== 🚀 Autocannon Load Testing Scaling Analysis: -------------------------------------------------------------------------------------------------------------------------------------------- Size RPS (M/O/Op) Avg Latency (M/O/Op) P90 Latency (M/O/Op) Throughput MB/s (M/O/Op) Speedup vs M (O/Op) Speedup vs O (Op) -------------------------------------------------------------------------------------------------------------------------------------------- 10 33.9/821.1/1286.8 319.3/11.7/7.3 327.0/12.0/7.0 31.4/0.2/37.3 24.3x/38.0x 1.6x 100 3.7/87.5/143.6 3241.3/117.2/70.6 4972.0/116.0/72.0 35.0/0.0/42.2 23.7x/38.9x 1.6x 1,000 0.0/0.0/13.8 0.0/0.0/792.9 0.0/0.0/755.0 0.0/0.0/41.5 NaNx/Infinityx Infinityx 🎯 Overall Load Testing Performance Summary: 📈 10 products: • +56.7% more requests/sec vs Current (821.1 → 1286.8) • +3701.3% more requests/sec vs MikroOrm (33.9 → 1286.8) 📈 100 products: • +64.2% more requests/sec vs Current (87.5 → 143.6) • +3790.5% more requests/sec vs MikroOrm (3.7 → 143.6) 📈 1000 products: • +Infinity% more requests/sec vs Current (0.0 → 13.8) • +Infinity% more requests/sec vs MikroOrm (0.0 → 13.8)
Medusa
Documentation | Website
Building blocks for digital commerce
Getting Started
Visit the Documentation to set up a Medusa application.
What is Medusa
Medusa is an ecommerce platform with a built-in framework for customization that allows you to build custom commerce applications without reinventing core commerce logic. The framework and modules can be used to build advanced B2B or DTC ecommerce stores, marketplaces, PoS systems, service businesses, or any product that needs foundational commerce primitives. All commerce modules are open-source and freely available on npm.
Learn more about Medusa’s architecture and commerce modules in the Docs.
Upgrades & Integrations
Follow the Release Notes to keep your Medusa project up-to-date.
Check out all available Medusa integrations.
Community & Contributions
The community and core team are available in GitHub Discussions, where you can ask for support, discuss roadmap, and share ideas.
Our Contribution Guide describes how to contribute to the codebase and Docs.
Join our Discord server to meet other community members.
Other channels
License
Licensed under the MIT License.