Supavisor

Infrastructure

connection pooler

SHOW HN2023

149points
49comments
#416of 3,109 in 2023
Top 14%of 2023 by points

How HN took it

CuriousMostly questions and neutral comments

6 positive, 18 neutral or asking, 0 mixed, 3 critical, out of 27 comments about the project. Thread score +0.09.

Idea: 2 for, 1 againstExecution: 1 for, 1 againstPerformance: 0 for, 1 againstDesign: 1 for, 0 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Elixir and BEAM suit this kind of tool well.

    From 2 comments
    • Binary pattern matching is great for working with protocols. Erlang process monitoring makes it very easy to handle client disconnects. And Elixir makes using Erlang a bit more…
      chasers on HN
    • I completely agree with chasers's points. Moreover, Elixir's excellent concurrency support and its fault-tolerant nature make it well-suited for handling a high number of…
      abc3erl on HN
  • Excited for a PgBouncer alternative.

    From 2 comments

Objections

  • Lacks routing of reads and writes across nodes.

    From 2 comments
    • My issue with poolers has always been routing. This solution works in a vanilla cluster but not in a multi-node one. Can Supavisor route Reads across multiple nodes and Writes to…
      vladsanchez on HN
    • Not yet but we definitely are going to do that.
      chasers on HN
  • Benchmark throughput seems low for BEAM.

    From 1 comment
    • at work we run pgbouncer on 4 vCPU (GCP c2-standard-4) machines, at 60% load, and they do ~15k TPS at peak, however we only peak at ~45k connections per node. however, i think…
      jhgg on HN
  • Elixir clients can already pool via Ecto and DBConnection.

    From 1 comment
    • You could bring it in as an application but you already get pooling with Ecto via Postgrex and DBConnection. If you're using Elixir there's really no need for separate connection…
      chasers on HN

Requests

  • Support prepared statements in transaction pooling mode.

    From 2 comments
    • Feature request that would make me consider moving off of pgbouncer: make prepared statements work in transaction pooling mode. We've found that we can double our throughput by…
      phamilton on HN
    • I don't believe that provides the performance improvements we desire. The main reason prepared statements improves throughout is that it caches query plans. As I understand it,…
      phamilton on HN
  • HTTP connections for serverless environments.

    From 1 comment
    • > 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…
      koolba on HN
  • Read/write routing across multiple nodes.

    From 1 comment
    • My issue with poolers has always been routing. This solution works in a vanilla cluster but not in a multi-node one. Can Supavisor route Reads across multiple nodes and Writes to…
      vladsanchez on HN

Questions

  • How telemetry metrics are affected by the pooler.

    From 1 comment
    • Why not call this SupaPool? Supavisor is very BEAMie. Question about telemetry. These are the metrics emitted by Ecto: - :idle_time - the time the connection spent waiting before…
      Dowwie on HN
  • Why poolboy instead of nimble_pool.

    From 1 comment
    • Looking at the repo's mix file it seems to use poolboy for pooling. Given that dashbit and José helped out, was nimble_pool considered?
      losvedir on HN
  • Whether it can run as a library in an Elixir app.

    From 1 comment
    • Perhaps a dumb question but can you run it as a library in an existing elixir app to pool the connections of the app?
      victorbjorklund on HN

Alternatives named

  • PgBouncer

    From 2 comments
    • Feature request that would make me consider moving off of pgbouncer: make prepared statements work in transaction pooling mode. We've found that we can double our throughput by…
      phamilton on HN
    • at work we run pgbouncer on 4 vCPU (GCP c2-standard-4) machines, at 60% load, and they do ~15k TPS at peak, however we only peak at ~45k connections per node. however, i think…
      jhgg on HN
  • pgpool

    From 1 comment
    • My issue with poolers has always been routing. This solution works in a vanilla cluster but not in a multi-node one. Can Supavisor route Reads across multiple nodes and Writes to…
      vladsanchez on HN
  • Ecto/Postgrex/DBConnection pooling

    From 1 comment
    • You could bring it in as an application but you already get pooling with Ecto via Postgrex and DBConnection. If you're using Elixir there's really no need for separate connection…
      chasers on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/35501718)