7

在 Laravel 4.2 和 Laravel Forge 上

我犯了一个错误,不小心将一些代码推到了生产服务器上,但是出现了一个错误,它将一个作业推到了队列中,而一旦完成就没有删除它。现在我不能再在队列中推送任何东西了,我得到:

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

我能做些什么?

4

2 回答 2

31

您可以使用 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

大小应以字节为单位。

我不确定这是否会产生严重的性能影响 - 到目前为止,对我来说非常好。我将不胜感激任何关于性能的评论。

于 2015-09-08T05:34:31.107 回答
8

这是因为您试图在队列本身中存储太多数据。尝试减少您推送到队列的数据。

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

如果您使用的是 eloquent 模型,它们会以这种方式自动处理。

于 2015-03-23T08:21:18.873 回答