理論 前提として、理論に関して…
物理メモリが不足したらpumaを自動で再起動
概要
- pumaがどんどんメモリを食っていってしまう。同様に、sidekiqもたくさんメモリを食ってしまっている。
- GCしても減らない。
ObjectSpace.each_object(ActiveRecord::Relation).each(&:reset) GC.start

- 物理メモリが80%以上使われていたらpumaを再起動するスクリプト書いた。
Puma
Sidekiq
導入結果
- swapにまで食い込まなくなりました。

OSの方で最適化がかかって、物理メモリが80%未満になって、swapされるような感じもするから発動タイミングは要調整。だけど、ほとんどの場合は問題無し。
こちらによって根本解決しました。
https://tech.studyplus.co.jp/entry/2019/09/09/094140