<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc" -->

---
title: How to know when you need more concurrency. | daily.dev
description: Three signals tell you when an Inngest workload has outgrown its concurrency limit: a backlog that never drains to zero, a burst budget spent before the month...
canonical: https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How to know when you need more concurrency. | daily.dev
og:description: Three signals tell you when an Inngest workload has outgrown its concurrency limit: a backlog that never drains to zero, a burst budget spent before the month...
og:url: https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc
og:image: https://api.daily.dev/og/posts/TeHWH9npc.png
og:image:alt: How to know when you need more concurrency.
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How to know when you need more concurrency.

**[Inngest Blog](https://daily.dev/sources/inngest)** · 8 min read · 0 upvotes · 0 comments

## Summary

Three signals tell you when an Inngest workload has outgrown its concurrency limit: a backlog that never drains to zero, a burst budget spent before the month ends, and a typical peak creeping within about 25% of the account limit. Concurrency needed roughly equals steps started per second times average seconds per step (Little's Law), so slower downstream calls need more slots even without more traffic. Bursty concurrency lets Pro and above accounts run up to 3x their limit for one hour a month. Pro includes 100 concurrent steps, addable in blocks of 25, with a peak above 1,000 calling for a conversation about Enterprise.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.inngest.com/blog/how-to-know-when-you-need-more-concurrency>

## Questions this post answers

### How do I calculate how much concurrency my workload needs?

Use Little's Law: slots needed is approximately equal to steps started per second multiplied by average seconds per step. For example, two steps per second that each take three seconds keep six slots busy; if those steps slow to nine seconds each, the same traffic needs eighteen slots. Long-running steps consume far more capacity than short ones, so a 30-second model call at five per second needs 150 slots while a 200ms database write at the same rate needs just one.

_daily.dev surfaces concurrency and durable execution deep dives for teams sizing event-driven workloads._

### How does Inngest's bursty concurrency feature work?

Bursty concurrency lets Pro and above Inngest accounts run up to 3x their normal concurrency limit for up to one hour per month. Each minute spent above the regular limit uses one minute of a 60-minute monthly budget, viewable on the billing usage page, with admin emails sent at 25%, 50%, 75%, and 100% of the budget. Bursts only apply to the account-level limit, not function-level limits, throttling, or priority settings.

_developers tracking usage-based limits can follow flow-control features like this on daily.dev._

### Why is my Inngest function backlog not draining even though I have concurrency capacity left?

The backlog may be caused by configuration rather than an account-wide shortage. Common causes include a function-level concurrency.limit acting as a lower ceiling, one customer's import crowding out others (fixable with a concurrency key), a downstream API rate-limiting requests (use throttling instead of raising slots), or a step holding its slot while polling or sleeping instead of using step.sleep() or step.waitForEvent().

_engineers debugging queue backlogs can track flow-control patterns like this on daily.dev._

## Similar posts on daily.dev

- [NEW: Bursty Concurrency—Coverage for Spikes](https://daily.dev/posts/new-bursty-concurrency-coverage-for-spikes-oywvtwix8) · Inngest Blog · 0 upvotes · 0 comments
- [Why Increasing Concurrency Causes HTTP 429 Errors \(It’s Not Just Too Many Requests\)](https://daily.dev/posts/why-increasing-concurrency-causes-http-429-errors-it-s-not-just-too-many-requests--h9ucfyrvk) · JavaScript in Plain English · 0 upvotes · 0 comments
- [Long running jobs shouldn't be first-come first-served](https://daily.dev/posts/long-running-jobs-shouldn-t-be-first-come-first-served-gu6nohphz) · Inngest Blog · 0 upvotes · 0 comments
- [When Impressive Performance Gains Do Not Matter](https://daily.dev/posts/when-impressive-performance-gains-do-not-matter-cxqe3fpey) · Lobsters · 0 upvotes · 0 comments

---

Tags: [#backend](https://daily.dev/tags/backend), [#inngest](https://daily.dev/tags/inngest)

[View this post on daily.dev](https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How to know when you need more concurrency.","url":"https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc"},"datePublished":"2026-10-28T17:23:22.331Z","dateModified":"2026-10-28T17:44:10.467Z","description":"Three signals tell you when an Inngest workload has outgrown its concurrency limit: a backlog that never drains to zero, a burst budget spent before the month...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/516b43ab52969681758e8eee2ff5a0d5?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/516b43ab52969681758e8eee2ff5a0d5?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Inngest Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Inngest Blog","logo":"https://media.daily.dev/image/upload/s--ieZKUa5y--/c_limit,w_256/f_auto,q_auto/v1789329423/logos/inngest?_a=BAMAMicg0","url":"https://daily.dev/sources/inngest"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"backend,inngest","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Inngest Blog","item":"https://daily.dev/sources/inngest"},{"@type":"ListItem","position":3,"name":"How to know when you need more concurrency."}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-to-know-when-you-need-more-concurrency--tehwh9npc#faq","mainEntity":[{"@type":"Question","name":"How do I calculate how much concurrency my workload needs?","acceptedAnswer":{"@type":"Answer","text":"Use Little's Law: slots needed is approximately equal to steps started per second multiplied by average seconds per step. For example, two steps per second that each take three seconds keep six slots busy; if those steps slow to nine seconds each, the same traffic needs eighteen slots. Long-running steps consume far more capacity than short ones, so a 30-second model call at five per second needs 150 slots while a 200ms database write at the same rate needs just one. daily.dev surfaces concurrency and durable execution deep dives for teams sizing event-driven workloads."}},{"@type":"Question","name":"How does Inngest's bursty concurrency feature work?","acceptedAnswer":{"@type":"Answer","text":"Bursty concurrency lets Pro and above Inngest accounts run up to 3x their normal concurrency limit for up to one hour per month. Each minute spent above the regular limit uses one minute of a 60-minute monthly budget, viewable on the billing usage page, with admin emails sent at 25%, 50%, 75%, and 100% of the budget. Bursts only apply to the account-level limit, not function-level limits, throttling, or priority settings. developers tracking usage-based limits can follow flow-control features like this on daily.dev."}},{"@type":"Question","name":"Why is my Inngest function backlog not draining even though I have concurrency capacity left?","acceptedAnswer":{"@type":"Answer","text":"The backlog may be caused by configuration rather than an account-wide shortage. Common causes include a function-level concurrency.limit acting as a lower ceiling, one customer's import crowding out others (fixable with a concurrency key), a downstream API rate-limiting requests (use throttling instead of raising slots), or a step holding its slot while polling or sleeping instead of using step.sleep() or step.waitForEvent(). engineers debugging queue backlogs can track flow-control patterns like this on daily.dev."}}]}
```

