2

我的应用程序在 Heroku 上与 unicorn 一起运行,并使用Sucker_punch在后台发送少量电子邮件,而不会减慢 Web UI。这已经工作了几个星期。

我将独角兽配置更改为 Heroku 推荐的配置。推荐的配置包括独角兽进程数的选项,我将进程数从 2 增加到 3。

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

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

我没有在任何地方找到表明问题的消息。

Q1:我应该期望在某处找到失败消息吗?像“试图启动吸盘 - 哎呀,没有足够的内存”之类的东西?

Q2:关于将来如何通知我这样的失败的任何建议。

谢谢。

4

1 回答 1

1

如果您确实超出了测功机内存,您应该在日志中发现 R14 或 R15 错误。请参阅https://devcenter.heroku.com/articles/error-codes#r14-memory-quota-exceeded

但是,鉴于您还没有发现这些错误,一个更可能的问题是perform您的傻瓜打孔工人的方法中的某些东西正在引发异常。我发现傻瓜式的任务调试起来很痛苦,因为它似乎 lib 默默地吞下了所有异常。尝试实例化您的任务并从 Rails 控制台调用 perform 以确保它的行为符合您的预期。

例如,您应该能够做到这一点而不会导致异常:

task = YourTask.new
task.perform :something, 55
于 2013-06-20T17:10:38.953 回答