R.Bar
R.Bar

Reputation: 362

Restart heroku dynos when their RAM exceeded

I have a memory leak problem with my server (who is written in ruby on rails) I want to implement a temporary solution that restarts the dynos automatically when their memory is exceeding. What is the best way to do this? And is it risky ?

Upvotes: 5

Views: 920

Answers (1)

Guy Dubrovski
Guy Dubrovski

Reputation: 1560

There is a great solution for it if you're using Puma as a server.

https://github.com/schneems/puma_worker_killer

You can restart your server when the RAM exceeds some threshold:

for example:

PumaWorkerKiller.config do |config|
  config.ram           = 1024 # mb
  config.frequency     = 5    # seconds
  config.percent_usage = 0.98
  config.rolling_restart_frequency = 12 * 3600 # 12 hours in seconds
end
PumaWorkerKiller.start

Also, to prevent data corruption and other funny issues in your DB, I would also suggest to make sure you are covered with atomic transactions.

Upvotes: 4

Related Questions