Laravel 处理一些密集计算任务的时候队列进程会被 kill 掉?

$ php artisan queue:work redis --queue=sosGen,uploadExcel  --tries=1
[2017-07-24 13:39:42] Processing: App\Jobs\ShortageGenerate
[1]    5794 killed     php artisan queue:work redis --queue=sosGen,uploadExcel --tries=1

环境是 homestead 的环境,也追不到任何的日志输出,有人解决过这个问题嘛?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7
leo

通常情况下是 OOM 了,php artisan queue:work --memory=1024。如果还是被 Kill 则有可能是超出了虚拟机本身的内存,调出 virtualbox 把虚拟机内存调高

6年前 评论

@leo 我在 job 里面有写 ini_set('memory_limit', '1024M') 虚拟机本身的内存我给了4个G,按理说不应该的,请问 php artisan queue:work --memory=1024 和直接在 job 中设置内存上限这两种做法有什么区别吗?

6年前 评论
leo

@lybc queue:work 会启动一个 deamon 进程,再有 deamon 进程去启动 worker 进程来处理 job,deamon 进程会监控 worker 进程的内存占用情况,如果超出了 --memory 的设置就会将其 kill 掉,而你的 ini_set('memory_limit', '1024M') 并不会影响 deamon 进程的这个行为。

6年前 评论

@leo

file

原来默认的 memory 只给128M啊 = =,明白了,多谢leo大神

6年前 评论
aa24615 4年前

@leo 有没有遇到过这样的问题

file

6年前 评论
leo

@lybc core 的原因有很多,根据 dump 出来的文件追吧

6年前 评论

你好,请问最后是怎么是怎么解决的哇,我设置的了 ,ini_set('memory_limit', '4096 M') 还是木有用

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!