Postgres LISTEN/NOTIFY Actually Scales for High-Performance Applications

Postgres LISTEN/NOTIFY Actually Scales for High-Performance Applications

I challenge the common belief that Postgres LISTEN/NOTIFY cannot handle high concurrency. Through rigorous testing, I demonstrate that this native feature scales effectively for real-time applications without needing external message brokers. The results show that with proper configuration, you can achieve significant throughput and low latency directly within your database, simplifying your architecture.

You do not need a complex external message broker to build scalable real-time systems; Postgres LISTEN/NOTIFY is often enough.
  1. jerf

    "Scale" isn't a binary, it's a continuum. "Scales to 60K/s" can be 5 orders of magnitude more than one system needs and 5 orders of magnitude too small for another. Personally I'd knock the general "premature optimization" off the list of "most common developer errors" and put in its place "using techs with the wrong scaling factors". If you use something too small and you exceed its needs, the failure is obvious, but the other way around is a problem too. Bringing in the overhead and management issues of the super scalable techs, as well as their limitations they impose so that they can scale, to a system that would actually be better off with a richer model whose richness prevents it from scaling but would save a lot of effort is also a bad choice.

    The ceiling of LISTEN/NOTIFY is small enough that you need to pay attention, and I personally like to have at least an order of magnitude of slack left over even after my most pessimistic load numbers are accounted for, but it's still plenty for a lot of projects, and the integration with the rest of the DB, its availability, its not being another service you have to devops, it's definitely not something that should be simply dismissed out of hand as an option. Even the original 2K/s number they cite is a lot of messages for some systems that are more properly measured in seconds per message.

  2. nzoschke

    I continue to love DBOS for how it just leverages Postgres (and now SQLite) properly. It's effortless to drop into an existing CRUD stack.

    Once you start down the "durable workflows" path, you start seeing them everywhere.

    My latest experiments are treating individual emails as durable workflows, where you, the people you're communicating with, agents and tools like GitHub or Attio all take turns in the flow.

    https://housecat.com/blog/gmail-durable-workflows-sandbox-vm

  3. dang

    Related, presumably:

    Postgres LISTEN/NOTIFY does not scale - https://news.ycombinator.com/item?id=44490510 - July 2025 (321 comments)

  4. sandeepkd

    I think a lot of these kind of posts are standalone assessment of your problems, understanding and solutions. Its debatable to term something as lack of expertise if one is trying to work with default settings of a tool and expecting a certain performance. Everyone is doing a continuous learning with the failures.

    1. What I find interesting is that the experiment seems to be using a DB server with 96 cores, 384 GB RAM (https://github.com/dbos-inc/dbos-postgres-benchmark/blob/mai...). This is very critical part of any such experiment, it should have been called out. The database is vertically scalable and that too has its limits

    2. Who is making connection, and from where has its own impact on performance and overall latency

    3. 60k may seem big number, however in real world the things which bring the systems down are the bursts of traffic, not the regular traffic.

    Personally I would never start with such a big server unless I am a big business. Its > 100K cost for one production DB cluster if I include read replicas and cross region redundancy

  5. dietr1ch

    I recall that in the first release that supported LISTEN/NOTIFY there was a performance issue around it (poor locking IIRC), which today the "bad post" mentioned in here corrects in a errata just after their first paragraph.

    Since the correction apparently dates from May 8th, I think that a post from July 24th might want to acknowledge that the popular post asserting this feature doesn't (didn't?) scale was not made in bad faith or was even wrong about their claims at the time.

More from this day

2026-07-24