MaxAttemptsExceededException (queue job) Laravel Origin: Application & API OSI layer 7 · Application Last updated 4 Nov 2026

Laravel Queue: Illuminate\Queue\MaxAttemptsExceededException: App\Jobs\SendReport has been attempted too many times or run too long

A queued job failed repeatedly or ran past its timeout, so it was marked failed.

Exact message you may see MaxAttemptsExceededException: App\Jobs has been attempted too many times or run too longhas been attempted too many times or run too long. The job may have previously timed outQueue job has been attempted too many timesThe job may have previously timed out
Seen on: Laravel PHP

Meaning

Check failed_jobs and logs for the root exception. A worker --timeout shorter than the job time kills it; retry_after in config/queue.php must exceed the job timeout or jobs get released and retried while still running. Make jobs idempotent and set $tries, $backoff, $timeout.

Common causes

  • Job takes longer than --timeout / $timeout
  • retry_after shorter than job duration (job picked up twice)
  • Exception thrown on each try
  • Memory exhausted in worker
  • External service failing

⚡ Quick fix

  1. Read php artisan queue:failed and storage/logs
  2. Set public $timeout = 120; and retry_after > timeout
  3. Use $tries, $backoff and failed() handler

Detailed fix by platform

Laravel

  1. php artisan queue:failed ; php artisan queue:retry all ; php artisan queue:work --timeout=120 --tries=3

How to diagnose

  1. Exception — First failure reason?
  2. Timeouts — timeout vs retry_after?
  3. Idempotent — Safe to retry?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Application & API. Errors that are often confused with or caused by this one (click to open):

403 This action is unauthorized — Laravel: Illuminate\Auth\Access\AuthorizationException: This action is unauthorized. (Laravel)403 This action is un…Attempt to read property "x" on null — Laravel/PHP 8: ErrorException: Attempt to read property "name" on null (Laravel)Attempt to read prope…BullMQ: Missing lock for job / job stalled more than allowable limit — BullMQ: Error: Missing lock for job 42. moveToFinished / job stalled more than allowable limit (Redis)BullMQ: Missing lock …Command "x" is not defined — Laravel: Symfony\Component\Console\Exception\CommandNotFoundException: Command "make:livewire" is not defined. Did you mean one of these? (Laravel)Command "x" is not de…Laravel: Allowed memory size exhausted (request) — Laravel/PHP: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in vendor/laravel/framework (Laravel)Laravel: Allowed memo…Maximum execution time of 30 seconds exceeded — Laravel: Symfony\Component\ErrorHandler\Error\FatalError: Maximum execution time of 30 seconds exceeded (Laravel)Maximum execution tim…ModelNotFoundException in queued job — Laravel Queue: Illuminate\Queue\SerializesModels: No query results for model [App\Models\Order] 42 (job failed) (Laravel)ModelNotFoundExceptio…No scheduled commands are ready to run — Laravel scheduler: INFO No scheduled commands are ready to run. (tasks never execute) (Laravel)No scheduled commands…MaxAttemp…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.