Merge branch 'chore/update-images' into docs/update-charts-supavisor
No files matched your search
@@ -26,7 +26,7 @@ Supavisor is a scalable, cloud-native Postgres connection pooler. It has been de
|
||||
|
||||
<Img
|
||||
alt="diagram of supavisor architecture"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/pooler-diagram-github--dark.svg"
|
||||
src="/images/blog/launch-week-8/day-5/pooler-diagram-github--dark.png"
|
||||
/>
|
||||
|
||||
Supavisor will enable us to build some exciting new features for your Postgres cluster:
|
||||
@@ -56,7 +56,7 @@ In the first test, we set up a single ARM 16-core Supavisor instance on Ubuntu 2
|
||||
|
||||
<Img
|
||||
alt="diagram supavisor 1 instance dark"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/supavisor-tests--baseline.svg"
|
||||
src="/images/blog/launch-week-8/day-5/supavisor-tests--baseline.png"
|
||||
/>
|
||||
|
||||
We wanted to assess the capacity of a single Supavisor instance. We achieved:
|
||||
@@ -67,7 +67,7 @@ We wanted to assess the capacity of a single Supavisor instance. We achieved:
|
||||
|
||||
<Img
|
||||
alt="diagram supavisor 1 instance dark"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/supavisor-tests--250k-test.svg"
|
||||
src="/images/blog/launch-week-8/day-5/supavisor-tests--250k-test.png"
|
||||
/>
|
||||
|
||||
With this setup the database is the bottleneck - 20,000 QPS was the maximum this instance could handle. Increasing QPS would have been possible with a larger instance or read-replicas, but we wanted to focus on the scalability of Supavisor's connection limit (not Postgres's). Since Supavisor is built with multi-tenancy, addition of read-replicas is as easy as sending a single post request.
|
||||
@@ -91,7 +91,7 @@ In the next step, we focused on Supavisor's vertical scaling capabilities by con
|
||||
|
||||
<Img
|
||||
alt="diagram supavisor 1 instance dark"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/supavisor-tests--500k-test.svg"
|
||||
src="/images/blog/launch-week-8/day-5/supavisor-tests--500k-test.png"
|
||||
/>
|
||||
|
||||
The system showed no signs of instability or performance degradation. QPS remained constant at 20,000, proving that an increased number of connections doesn't negatively affect Supavisor's overall performance (this is generally expected from a [BEAM-based language](https://stressgrid.com/blog/webserver_benchmark/) like Elixir).
|
||||
@@ -132,7 +132,7 @@ To examine horizontal scalability, we deployed two 64-core Supavisor instances,
|
||||
|
||||
<Img
|
||||
alt="diagram supavisor 1 instance dark"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/supavisor-tests--scaling-to-1million.svg"
|
||||
src="/images/blog/launch-week-8/day-5/supavisor-tests--scaling-to-1million.png"
|
||||
/>
|
||||
|
||||
In the Supavisor architecture, only a single node holds direct connections to each database instance. When you add more Postgres databases or read-replicas, Supavisor spreads the connections to the replicas. Every Supavisor instance can accept incoming connections and either execute queries themselves (if they directly connected) or relay to another node (if not).
|
||||
@@ -177,7 +177,7 @@ In a multi-tenant setup (or when using Read-Replicas), the load is much more eve
|
||||
|
||||
<Img
|
||||
alt="diagram supavisor 1 instance dark"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/supavisor-tests--multi-tenant-concept.svg"
|
||||
src="/images/blog/launch-week-8/day-5/supavisor-tests--multi-tenant-concept.png"
|
||||
/>
|
||||
|
||||
### Supavisor's impact on query duration
|
||||
@@ -259,7 +259,7 @@ Currently, every Supabase project comes with its own PgBouncer server running on
|
||||
|
||||
<Img
|
||||
alt="diagram supavisor 1 instance dark"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/supavisor-tests--pgbouncer.svg"
|
||||
src="/images/blog/launch-week-8/day-5/supavisor-tests--pgbouncer.png"
|
||||
/>
|
||||
|
||||
_Supavisor architecture_
|
||||
@@ -268,7 +268,7 @@ In the future, you connect to a distinct multi-tenant Supavisor cluster through
|
||||
|
||||
<Img
|
||||
alt="diagram supavisor 1 instance dark"
|
||||
src="/images/blog/2023-08-11-supavisor-1-million/supavisor-tests--supavisor-and-supabase.svg"
|
||||
src="/images/blog/launch-week-8/day-5/supavisor-tests--supavisor-and-supabase.png"
|
||||
/>
|
||||
|
||||
We ran 5,000 queries per second for each configuration, this time experimenting with `insert` query. To make the expreriment more realistic, we enabled the PostGIS extension to store coordinates:
|
||||
|
||||
|
After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 63 KiB |