Sidekiq が時間経過とともに無限にメモリを消費し続ける現象について、どうやら Ruby バージョンによってはオブジェクトを破棄したあとメモリを開放するかどうかの挙動が違うらしい、という情報を見かけた上に、「そもそも C でも free したからといってメモリが解放されるとは限らない」という、メモリ管理に対する諦めとも取れる発言を見かけて、みんな苦労してるんだなーと思うなどした。
@yakitama jemalloc
を使ってみると、より積極的にメモリを解放してくれるかもしれません
@zundan なるほど、これコード変更なしでも適用できそうな感じですかねー。
https://thomas-leister.de/en/mastodon-save-ram-jemalloc/
joinmastodon.org 上の GitLab の Mastodon Production ガイドなんてあるんですね…… こちらでは jemalloc を有効にする手順が書かれていたり。
https://source.joinmastodon.org/mastodon/documentation/blob/master/Running-Mastodon/Production-guide.md
@yakitama Linuxが標準で提供してるmalloc/freeの別の実装です。プロセスを起動するときにLD_PRELOADでライブラリ関数を割り込ませる感じで使うので、コードへの変更は(アプリの起動スクリプトを除いて)不要です。
@zundan なるほど、ありがとうございますー。実際に適用してみたら、いまのところえらく快適になって幸せです。