Sidekiq が時間経過とともに無限にメモリを消費し続ける現象について、どうやら Ruby バージョンによってはオブジェクトを破棄したあとメモリを開放するかどうかの挙動が違うらしい、という情報を見かけた上に、「そもそも C でも free したからといってメモリが解放されるとは限らない」という、メモリ管理に対する諦めとも取れる発言を見かけて、みんな苦労してるんだなーと思うなどした。
Conversation
Notices
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 27-Sep-2018 09:45:30 JST
やきたま :sabakan:
-
zunda ? nはおまけ :green_dango: (zundan@mastodon.zunda.ninja@mastodon.zunda.ninja)'s status on Thursday, 27-Sep-2018 09:46:53 JST
zunda ? nはおまけ :green_dango:
@yakitama jemalloc
を使ってみると、より積極的にメモリを解放してくれるかもしれません -
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 27-Sep-2018 09:47:16 JST
やきたま :sabakan:
そもそも、そのあたりの挙動は Ruby のコンフィグ的なやつでなんとかできないのか。プロセスリストに見えるのは bundle だし、もしかしたら bundler のコンフィグかもしれない? このあたりの技術はよく分かってないのでアレ。
-
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 27-Sep-2018 09:55:24 JST
やきたま :sabakan:
@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 -
zunda ? nはおまけ :green_dango: (zundan@mastodon.zunda.ninja@mastodon.zunda.ninja)'s status on Thursday, 27-Sep-2018 11:08:11 JST
zunda ? nはおまけ :green_dango:
@yakitama Linuxが標準で提供してるmalloc/freeの別の実装です。プロセスを起動するときにLD_PRELOADでライブラリ関数を割り込ませる感じで使うので、コードへの変更は(アプリの起動スクリプトを除いて)不要です。
In conversation permalink -
やきたま :sabakan: (yakitama@mstdn.yakitamago.info)'s status on Thursday, 27-Sep-2018 11:11:17 JST
やきたま :sabakan:
@zundan なるほど、ありがとうございますー。実際に適用してみたら、いまのところえらく快適になって幸せです。
In conversation permalink
-