【发布时间】:2017-08-16 12:14:34
【问题描述】:
我的 Heroku Rails 应用程序中的 Sidekiq 后台作业遭受巨大的持续内存泄漏(900mb 或更高)。在这些任务运行后,这些内存泄漏留在我的 Worker Dynos 中,导致它们在我的 Worker dyno 中触发许多 R14 甚至 R15 错误,除非我或 Heroku 重新启动我的 Worker dyno(例如 24 小时后)。
一个有效减少这些内存泄漏影响的解决方案是将我们的 rake 任务转移到 Heroku 调度程序,在那里我们可以受益于 Heroku 使用它们自己的单独内存和进程来运行 One-Off dynos 来完成每个任务在再次减速之前为我们工作。对于计划任务,这给了我们很大的喘息空间来隔离这些内存泄漏的影响,因为每个任务都不会影响其他任务。
但是,我们的许多内存密集型后台作业无法移动到 Heroku 调度程序,因为它们是由于人们在我们的应用程序中执行的操作而触发的。
如何将应用触发的后台作业移至 Heroku One-Off Dynos?
【问题讨论】:
标签: ruby-on-rails heroku memory-leaks background-process heroku-toolbelt