JOB_TOO_BIG Pheanstalk - 可以做些什么?

时间:2015-03-22 20:12:12

标签: php laravel queue laravel-forge pheanstalk

在Laravel 4.2& Laravel Forge

我犯了一个错误并且意外地将一些代码推送到生产服务器上,但是有一个错误,它将一个作业推送到队列而不会在完成后删除它。 现在我不能再推送队列中的任何东西,我得到:

  

Pheanstalk_Exception JOB_TOO_BIG:作业数据超出服务器强制限制

我该怎么办?

2 个答案:

答案 0 :(得分:23)

您可以使用Beanstalkd的-z选项增加最大作业大小:http://linux.die.net/man/1/beanstalkd

要在Forge上执行此操作,您需要SSH到服务器并编辑/etc/default/beanstalkd文件。

添加以下行(或取消注释现有的BEANSTALKD_EXTRA行并进行编辑): BEANSTALKD_EXTRA="-z 524280"

进行更改后重新启动beanstalkd: sudo service beanstalkd restart

大小应以字节为单位。

我不确定这是否会产生严重的性能影响 - 到目前为止,这对我有好处。我很感激任何关于表现的评论。

答案 1 :(得分:8)

这是因为您尝试在队列中存储过多数据。尝试减少你要推送到队列的数据。

例如,如果您的队列作业涉及使用模型,只需将模型ID传递到队列中,并作为作业的一部分从数据库中获取它们,而不是将整个模型实例传递给队列。

如果您使用雄辩的模型,他们会以这种方式自动处理。