物理メモリが不足したらpumaを自動で再起動

Ruby on Rails

概要

  • pumaがどんどんメモリを食っていってしまう。同様に、sidekiqもたくさんメモリを食ってしまっている。
  • GCしても減らない。
ObjectSpace.each_object(ActiveRecord::Relation).each(&:reset)
GC.start
オレンジはswap used. 減るときは再起動しているタイミング。
  • 物理メモリが80%以上使われていたらpumaを再起動するスクリプト書いた。

Puma

Sidekiq

導入結果

  • swapにまで食い込まなくなりました。

コメント

  1. matsubokkuri より:

    OSの方で最適化がかかって、物理メモリが80%未満になって、swapされるような感じもするから発動タイミングは要調整。だけど、ほとんどの場合は問題無し。

  2. matsubokkuri より:

    こちらによって根本解決しました。
    https://tech.studyplus.co.jp/entry/2019/09/09/094140