Heroku,sucker_punch显然是无声的失败

时间:2013-05-14 01:28:26

标签: heroku delayed-execution

我的应用程序使用独角兽在Heroku上运行,并使用sucker_punch在后台发送少量电子邮件,而不会降低Web UI的速度。这已经好几周了。

我将unicorn配置更改为Heroku推荐配置。推荐的配置 包括一个选择unicorn进程的数量,我将进程数从2增加到3。

显然这太过分了。 sucker_punch作业停止运行。我有日志消息,指示它们何时排队,并且我有消息指示它们何时开始处理。日志显示它们正在排队但处理永远不会开始。

我的理论是,我从2到3只独角兽超过记忆。

我没有在任何地方发现任何表明存在问题的消息。

问题1:我应该在某个地方找到失败的消息吗?像“试图启动sucker_punch - oops,没有足够的内存”之类的东西?

Q2:关于如何在未来通知此类故障的任何建议。

感谢。

1 个答案:

答案 0 :(得分:1)

如果你确实超过了dyno内存,你应该在日志中发现R14或R15错误。见https://devcenter.heroku.com/articles/error-codes#r14-memory-quota-exceeded

更可能的问题是,鉴于您没有发现这些错误,您的吸盘工作者的perform方法中的某些内容正在抛出异常。我发现sucker punch任务很难调试,因为看起来lib会静默地吞下所有异常。尝试实例化您的任务并从rails控制台调用它,以确保它的行为符合您的预期。

例如,您应该能够在不造成异常的情况下执行此操作:

task = YourTask.new
task.perform :something, 55
相关问题