在php工匠队列期间达到内存限制时会发生什么:使用Beanstalkd侦听



我正在NGINX上创建一个MySQL数据库的Laravel 4.2应用程序。我正在尝试研究使用队列在任何给定时间减少CPU使用的选项。

我希望任何排队的任务保持在一定的内存使用水平;

但我不明白的是,如果正在运行的任务超过了php artisan queue:listen(或work)的--memory参数设置的限制,实际会发生什么。

如果我运行

php artisan -h queue:work

在我的开发终端中,它只是定义了

The memory limit in megabytes (default: 128)

但是没有说明如果任务试图突破这个限制会发生什么。

我认为可能发生的两件事:

1)它将导致队列失败,并最终在我的失败队列表

2)它会以某种方式限制服务器完成任务的处理能力

我希望是2号;我说的对吗?

No。它不能做任何魔术来改变你的代码。它所做的是在任务完成后安全退出任务,并允许它用一个新的worker重新启动。

通常情况下,您会使用memory_limit = -1运行命令行任务(只要它需要)-这可能很有用,但您也需要能够恢复其他进程能够使用它。

见:IlluminateQueueListener::runProcess(Process $ Process, $memory);

相关内容

  • 没有找到相关文章

最新更新