当 RAM 超出时重新启动 heroku dynos

R.B*_*Bar 5 memory-leaks ruby-on-rails heroku

我的服务器(用 ruby​​ on Rails 编写)存在内存泄漏问题,我想实现一个临时解决方案,当内存超出时自动重新启动测功机。做这个的最好方式是什么?这有风险吗?

Guy*_*ski 4

如果您使用 Puma 作为服务器,有一个很好的解决方案。

https://github.com/schneems/puma_worker_killer

当 RAM 超过某个阈值时,您可以重新启动服务器:

例如:

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
Run Code Online (Sandbox Code Playgroud)

另外,为了防止数据库中的数据损坏和其他有趣的问题,我还建议确保您涵盖原子事务。