我的应用程序使用独角兽在Heroku上运行,并使用sucker_punch在后台发送少量电子邮件,而不会降低Web UI的速度。这已经好几周了。
我将unicorn配置更改为Heroku推荐配置。推荐的配置 包括一个选择unicorn进程的数量,我将进程数从2增加到3。
显然这太过分了。 sucker_punch作业停止运行。我有日志消息,指示它们何时排队,并且我有消息指示它们何时开始处理。日志显示它们正在排队但处理永远不会开始。
我的理论是,我从2到3只独角兽超过记忆。
我没有在任何地方发现任何表明存在问题的消息。
问题1:我应该在某个地方找到失败的消息吗?像“试图启动sucker_punch - oops,没有足够的内存”之类的东西?
Q2:关于如何在未来通知此类故障的任何建议。
感谢。
答案 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