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 😲:
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á.