Ruby on Rails and Docker: Jemalloc in multi-platform images
Teamtailor has been running with jemalloc in production for a couple of days, with great success. Today, we wanted to try running the app on AWS's Graviton, their ARM-based CPUs, to see if we could get a better cost/performance ratio.
Our Docker image setup for jemalloc, based on a gist from John Bachir, was using a hard-coded path containing a reference to x86_64
:
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
ENV MALLOC_CONF="dirty_decay_ms:1000,narenas:2,background_thread:true"
The solution I came up with to support both linux/amd64
and linux/arm64
was to use a symlink:
RUN ln -s /usr/lib/*-linux-gnu/libjemalloc.so.2 /usr/lib/libjemalloc.so.2
ENV LD_PRELOAD=/usr/lib/libjemalloc.so.2
ENV MALLOC_CONF="dirty_decay_ms:1000,narenas:2,background_thread:true"
- Published at
- Tags
- ruby docker programming
- Related posts
- Another success story with Jemalloc Jekyll code highlighting on Heroku Deploy to Heroku from Github
- This post elsewhere