
Show HN: Supavisor – a Postgres connection pooler written in Elixir
by kiwicopple on Hacker News.
hey hn, supabase ceo here this is a postgres connection pooler. it’s similar to pgbouncer, but built with Elixir and specifically designed for multi-tenancy. it’s still under development, but it’s at a stage where we can gather a feedback from the community and you can try it yourself. we aren’t using this in production yet, but aiming to deploy it for a subset of databases in the next 2 months. We have the following benchmarks (details in the readme): – Elixir Cluster maintaining 400 connections to a single Postgres database
– 1_000_000 clients connecting to the Elixir cluster
– Sending 20_000 transactions per second
– Consuming 7.8G RAM and ~50% CPU on a 64vCPU machine
supavisor can be run as a cluster or a single node/binary. It’s handling 90%+ of the throughput of pgbouncer on a local machine (running pgbench) we will place this in front of all supabase databases. It will eventually be able to handle multiple types of connections: traditional TCP connections, and HTTP connections for developers who are connecting to Postgres in serverless environments using Prisma, Kysely, Drizzle, etc the proxy will serve as a connection buffer while we scale databases: scaling up compute with zero-downtime, and for scale-to-zero – triggering a server restart when a connection is initiated finally, i want to shout out to Jose and the Dashbit/elixir team. They were extremely helpful with the design & architecture. they have been valuable partners, and elixir continues to be an amazing language for tools like this and our Realtime server.
