JOB_TOO_BIG Pheanstalk - 可以做什么?
JOB_TOO_BIG Pheanstalk - what can be done?
在 Laravel 4.2 & Laravel 锻造
我犯了一个错误,不小心将一些代码推到了生产服务器上,但是有一个错误,它把一个作业推到了队列中,而没有在完成后删除它。
现在我不能再在队列中推送任何东西,我得到:
Pheanstalk_Exception JOB_TOO_BIG: job data exceeds server-enforced limit
我能做什么?
这是因为您试图在队列本身中存储太多数据。尝试减少您推送到队列的数据。
例如,如果您的队列作业涉及使用模型,只需将模型 ID 传递到队列中并作为作业的一部分从数据库中获取它们,而不是将整个模型实例传递到队列中。
如果您使用的是 eloquent 模型,它们会自动以这种方式处理。
您可以使用 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
大小应以字节为单位指定。
我不确定这是否会对性能产生严重影响 - 到目前为止,对我来说还不错。如果对性能有任何评论,我将不胜感激。
在 Laravel 4.2 & Laravel 锻造
我犯了一个错误,不小心将一些代码推到了生产服务器上,但是有一个错误,它把一个作业推到了队列中,而没有在完成后删除它。 现在我不能再在队列中推送任何东西,我得到:
Pheanstalk_Exception JOB_TOO_BIG: job data exceeds server-enforced limit
我能做什么?
这是因为您试图在队列本身中存储太多数据。尝试减少您推送到队列的数据。
例如,如果您的队列作业涉及使用模型,只需将模型 ID 传递到队列中并作为作业的一部分从数据库中获取它们,而不是将整个模型实例传递到队列中。
如果您使用的是 eloquent 模型,它们会自动以这种方式处理。
您可以使用 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
大小应以字节为单位指定。
我不确定这是否会对性能产生严重影响 - 到目前为止,对我来说还不错。如果对性能有任何评论,我将不胜感激。