You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel队列监听器与任务随机失败且未进入失败任务表求助

Laravel队列任务随机失败问题排查请求

故障现象

  • 事件触发型队列监听器及部分定时调度任务出现随机失败,故障爆发时会产生大量失败的队列监听器,抛出的未处理异常信息如下:

Unhandled exception within Laravel Queue job:
'Illuminate\Database\Eloquent\ModelNotFoundException'

  • 异常提示存在特殊性:常规ModelNotFoundException的提示为No query results for model [App\SomeModel],但本次异常以Unhandled exception within Laravel Queue job作为包裹提示,此前未在技术帖中见过该形式
  • 异常未被正常处理:worker.log中能看到任务失败记录,但这些任务并未写入存储于MariaDB的failed_jobs表;我们未设置deleteWhenMissingModels标识,根据Laravel文档,默认情况下模型缺失的任务应进入失败任务表,目前疑似这些任务要么未被写入该表,要么被自动清理/删除,未处理异常可能是诱因

核心疑问

  • Laravel无法捕获/处理队列任务抛出异常的场景有哪些?
  • 队列事件为何会随机失败?(正常情况下运行良好,故障发生时约1%的监听器失败,且无特定关联的监听器或事件)

已配置与排查信息

  • 已设置after_commit标识,按文档要求该标识应保证监听器在无未提交事务时执行
  • Redis队列配置如下:
'redis' => [
    'driver'     => 'redis',
    'connection' => 'queue',
    'queue'      => 'default',
    'retry_after' => 9000,
    'after_commit' => true
],
  • 系统存在多个队列,暂不确定是否需要单独配置;任务可正常进入Redis,但after_commit的规则似乎未被遵守
  • 仅事件驱动的监听器存在此故障,普通代码调度的任务未出现同类问题

补充背景

  • 几周前曾遇到任务查询(如INSERT INTO jobs等)停滞的问题,原因是等待事务提交,当时将队列从MariaDB切换为Redis,之后很快出现了本次描述的问题
  • 近3天未出现该故障,但4天前曾发生数百次此类事件

内容的提问来源于stack exchange,提问作者MOHAMMED ABDUL HASEEB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 22:00:05