Introduction GitHub Actions workflows that remain in "queued" state for extended periods delay code reviews, testing, and deployments. This is especially problematic for large teams or organizations with many repositories.

Symptoms - Workflow status shows "Queued" for 30+ minutes - Error: "You have exceeded the maximum number of concurrent jobs" - Self-hosted runner shows "offline" or "busy" - Workflow triggered but no runner picks it up - Free tier runner limits reached

Common Causes - Free tier concurrent job limit (20 jobs for free accounts) - Self-hosted runner offline or out of capacity - Repository-level workflow concurrency limits - Organization-wide runner pool exhausted - Workflow requesting specific labels not available

Step-by-Step Fix 1. **Check runner status**: ```bash # Repository settings > Actions > Runners # Check for offline runners ```

  1. 1.Cancel stale queued workflows:
  2. 2.In the Actions tab, cancel workflows that have been queued for too long.
  3. 3.Scale self-hosted runners:
  4. 4.```bash
  5. 5.# Use actions-runner-controller for Kubernetes
  6. 6.kubectl scale deployment runner-deployment --replicas=5
  7. 7.`

Prevention - Use organization-level runners shared across repositories - Implement workflow concurrency controls with cancel-in-progress - Scale self-hosted runners based on queue depth - Monitor GitHub Actions minutes usage - Optimize workflows to reduce job count and duration