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.
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 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_aftershorter than job duration (job picked up twice)- Exception thrown on each try
- Memory exhausted in worker
- External service failing
⚡ Quick fix
- Read
php artisan queue:failedandstorage/logs - Set
public $timeout = 120;andretry_after> timeout - Use
$tries,$backoffandfailed()handler
Detailed fix by platform
Laravel
php artisan queue:failed;php artisan queue:retry all;php artisan queue:work --timeout=120 --tries=3
How to diagnose
- Exception — First failure reason?
- Timeouts — timeout vs retry_after?
- 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:
Similar errors
- 403 This action is unauthorized Laravel: Illuminate\Auth\Access\AuthorizationException: This action is unauthorized.
- Attempt to read property "x" on null Laravel/PHP 8: ErrorException: Attempt to read property "name" on null
- 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
Most viewed in Laravel
- MassAssignmentException Laravel: Illuminate\Database\Eloquent\MassAssignmentException: Add [x] to fillable property to allow mass assignment
- The GET method is not supported for route Laravel: The GET method is not supported for route x. Supported methods: POST (MethodNotAllowedHttpException)
- Route [login] not defined Laravel: Symfony\Component\Routing\Exception\RouteNotFoundException: Route [login] not defined
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 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.
Report a correction or suggest an improvement
Last updated 4 Nov 2026