パフォーマンスチューニングの値があと一歩伸び悩んでいるので、ふと思い立って jemalloc を導入してみた。
# runtime stage: LD_PRELOAD で jemalloc を指定 FROM ruby:3.1.0-slim-bullseye as app ENV APP=/app \ LANG=C.UTF-8 \ RUNTIME_PACKAGES="tzdata libmariadb3 libjemalloc2" \ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2
ビルドしているのでまだどうなるかわからないけど、初めて本番に jemalloc 入れる……。
エラー
なんか ECS exec したらエラーでた。
Starting session with SessionId: donbulinux-0000111122223333 ERROR: ld.so: object '/usr/lib/x86_64-linux-gnu/libjemalloc.so.2' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. # ls -lha /usr/lib/x86_64-linux-gnu/libjemalloc.so.2
よく見たらマルチステージビルドのうち、最終的なイメージ元になるトコでインストールしてなくて「リンカがライブラリないよーって言ってる」状態だった。
apt-get
するステージを変更したら解決したので、ワイと同じような PON はみんなしてくれるなよ……! (こまったら Dockerfile の一番最後に書けば大体解決するはず