我的Heroku Rails应用程序遭受巨大的持久性内存泄漏(900mb或更高)的伤害,我有Sidekiq后台作业。这些内存泄漏在这些任务运行后会保留在我的Worker Dynos中,除非我或Heroku重新启动我的工人dyno(例如24小时后),否则会导致它们在我的Worker dyno中触发许多R14甚至R15错误。如何从我的应用程序中启动Heroku One-Off Dynos?
减少这些内存泄漏影响的一个解决方案是将我们的rake任务移动到Heroku调度程序,在Heroku调度程序中我们可以从Heroku中获益,使用他们自己单独的内存和要执行的过程来旋转一次性dynos每一份工作都需要我们再次下调。对于计划的任务,这给了我们很大的喘息空间来隔离这些内存泄漏的影响,因为每个内存泄漏都不会影响其他人。
但是,我们的许多内存密集型后台作业无法移动到Heroku调度程序,因为它们是由于人们在我们的应用程序中执行的操作而触发的。
如何将应用程序触发的后台作业移至Heroku One-Off Dynos?