Laravel项目无法运行5个以上队列,请求排查原因
Laravel队列超过5个后任务不执行的排查方向
- Plesk进程配额限制:Plesk默认会给每个订阅(网站)设置进程数量上限,大概率是这个配额刚好卡在5个。超过后新启动的
queue:work进程会被Plesk的资源管控直接终止,导致无法消费任务。可以到Plesk的「订阅」->「资源使用」里查看当前进程数配额,或者联系主机商确认是否有相关限制。 - 系统用户进程数限制(ulimit):运行队列的服务器系统用户可能被设置了进程数上限,比如通过
ulimit -u命令可以查看当前用户的最大进程数。部分主机商会限制单个用户的进程数来避免资源滥用,若上限低于6,新进程无法启动。 - 数据库连接数耗尽:每个
queue:work进程都会占用至少一个数据库连接,当启动第6个进程时,可能刚好打满数据库的max_connections上限,导致新进程无法连接数据库拉取任务。可以通过执行SHOW VARIABLES LIKE 'max_connections';查看MySQL的连接数配置,或者检查Laravel日志里是否有数据库连接失败的报错。 - Plesk任务计划程序并发限制:如果是通过Plesk任务计划添加的
queue:work命令,部分Plesk版本对单个用户的并发任务数有默认限制,超过5个后不会再启动新进程。可以尝试合并队列进程,用queue:work --queue=queue1,queue2,queue3这样的命令,一个进程处理多个队列,减少进程数量。 - 进程启动失败未捕获:单独启动第6个队列进程,查看命令行输出的错误信息。可能是权限不足、依赖缺失或者日志权限问题,导致进程启动后立刻退出,表面上看任务没被执行。可以在Plesk里手动执行
queue:work命令,观察是否有报错。
内容的提问来源于stack exchange,提问作者tsil
相关产品推荐
相关产品推荐

