jemallocでMisskeyのメモリ使用量を減らす

導入手順を忘れないようにメモがてら残しておきます。
Misskeyは起動していると、徐々にメモリの使用量が増えていくのですが、 それを軽減する案がGitHubに記載されていたので試してみました。

環境

  • Ubuntu 22.04
  • Misskey v13.14.2 (docker)

対応策

nexryaiさんがバックエンドのメモリリーク · Issue #10984 · misskey-dev/misskeyで 記載されてますが、Jemallocというメモリアロケータを使うことで軽減できます。

上記のコメントにはsystemdに適用する場合について記載されてますが、Dockerの場合は misskey-v13-jemalloc/Dockerfile at main · nexryai/misskey-v13-jemallocを参考にすると良いです。

Dockerfileの65行目に libjemalloc2 を追加、85行目に ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 を追加します。
あとは、docker compose buildしてdownしてupすれば良いです。

結果

実施前はMisskeyのプロセスが2GB程度メモリを消費していたのですが、0.8GB前後で落ち着くようになりました。

あとがき

これはすごいです。上手いことやればメモリ1GBのVPSでもMisskey v13が動作できるのでは? メモリ使用量の削減は、サーバーのスペックを下げて維持費を減らすことにつながりお財布にも優しいです。
Misskeyサーバー管理者の皆様におすすめです。

nexryaiさんありがとうございます。

関連記事