{
  "docVersion": 1,
  "id": "blog-bp-2",
  "name": "The unbounded queue — where systems go to die",
  "purpose": "Remove the limit and overload doesn't get rejected — it gets absorbed. The queue grows without bound, latency explodes (Little's Law), memory runs out, the process dies.",
  "nodes": {
    "prod": {
      "type": "users",
      "label": "Traffic spike",
      "x": 40,
      "y": 200,
      "w": 140,
      "h": 86,
      "color": "red",
      "runtime": "20k/s in"
    },
    "buf": {
      "type": "queue",
      "label": "UNBOUNDED queue",
      "x": 360,
      "y": 200,
      "w": 190,
      "h": 86,
      "color": "red",
      "style": "dashed",
      "runtime": "depth: 2M and climbing"
    },
    "cons": {
      "type": "worker",
      "label": "Consumer",
      "x": 720,
      "y": 200,
      "w": 140,
      "h": 86,
      "runtime": "still 2k/s out"
    }
  },
  "edges": {
    "e1": {
      "from": "prod",
      "to": "buf",
      "fromSide": "right",
      "toSide": "left",
      "label": "20k/s in",
      "color": "red",
      "animated": true,
      "flowSpeed": "fast"
    },
    "e2": {
      "from": "buf",
      "to": "cons",
      "fromSide": "right",
      "toSide": "left",
      "label": "2k/s out",
      "animated": true,
      "flowSpeed": "slow"
    }
  },
  "boxes": {
    "z1": {
      "x": 330,
      "y": 120,
      "w": 250,
      "h": 220,
      "label": "no limit = no backpressure signal",
      "color": "red",
      "opacity": 0.05
    }
  },
  "texts": {
    "t1": {
      "x": 40,
      "y": 340,
      "text": "Little's Law:  latency = queue depth ÷ throughput.\nin > out forever → depth → ∞ → latency → ∞, then OUT OF MEMORY.\nevery request in that queue is already too old to matter. this is the death spiral\nbehind most 'the whole thing just fell over' outages.",
      "color": "red",
      "size": 12
    }
  },
  "meta": {
    "createdAt": "2026-07-23T09:00:00.000Z",
    "modifiedAt": "2026-07-23T09:00:00.000Z"
  }
}