↓ Skip to main content

“Ideally in a web application, aside from some in-memory caches, no object allocated as part of a request should survive longer than the request itself.”

Jean Boussierrailsatscale.com ↗

Shopify’s monolith runs on Ruby’s master branch, so it gets new GC features months before the December release. Disabling major collection during requests and running it between them cut average latency 5% and p99 latency 10% on half the production fleet. The whole feature collapsed into one call, GC.config(rgengc_allow_full_mark: false). The capacity win they hoped for mostly didn’t show up.