Poniendo riendas al consumo de memoria de Ruby

Por

No es secreto que Ruby no está ni ahí con la memoria, que esperar de las glotonas aplicaciones Ruby on Rails que parecen confundir RAM con chocolate 🍫.

Nuestro dyno worker sigue siendo un Standard-2X, no es que no tengamos plata para hacer el upgrade, es que preferimos hacer tuning del codebase y por ahí del mismo dyno hasta que no haya más nada que hacer — ojalá y sigamos creciendo — y la solución sea mejorar los fierros 💰.

Por ello cada vez que veo pasar una lectura relacionada con tunear el consumo de memoria de Ruby dejo todo lo que estoy haciendo 😄. Así llegue a este post del autor de Sidekiq y rápido y veloz experimenté haciendo el cambio:

heroku config:set MALLOC_ARENA_MAX=2

Y acá el resultado luego de dieciocho horas 😲:

No, no tenemos memory bloat. También bajé la concurrencia, too many threads 😉.

Caveat: Tal como aclara este otro post de Heroku, tunear el malloc usando menos cantidad de pools es un trade-off entre memoria y performance, así que por ahí nos ponemos más lentos.

Sigue probar con instalar el buildpack de jemalloc a ver si es tan mágico como dicen acá, acá y acá.

Lo más reciente en Blog