Commit 297e7c3f authored by Evan Read's avatar Evan Read Committed by Marcel Amirault

Minor fixes to new scalability content

parent eb30b359
...@@ -104,10 +104,10 @@ GitLab.com](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7356). ...@@ -104,10 +104,10 @@ GitLab.com](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7356).
There are several strategies to provide high-availability and redundancy: There are several strategies to provide high-availability and redundancy:
1. Write-ahead logs (WAL) streamed to object storage (e.g. S3, Google Cloud - Write-ahead logs (WAL) streamed to object storage (e.g. S3, Google Cloud
Storage). Storage).
1. Read-replicas (hot backups) - Read-replicas (hot backups).
1. Delayed replicas - Delayed replicas.
To restore a database from a point in time, a base backup needs to have To restore a database from a point in time, a base backup needs to have
been taken prior to that incident. Once a database has restored from been taken prior to that incident. Once a database has restored from
...@@ -145,9 +145,9 @@ saturate a single core, which can result in slower response times for ...@@ -145,9 +145,9 @@ saturate a single core, which can result in slower response times for
background job and/or Web requests. There are two ways to address this background job and/or Web requests. There are two ways to address this
limitation: limitation:
1. Run multiple PgBouncer instances - Run multiple PgBouncer instances.
1. Use a multi-threaded connection pooler (e.g. - Use a multi-threaded connection pooler (e.g.
[Odyssey](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7776). [Odyssey](https://gitlab.com/gitlab-com/gl-infra/infrastructure/issues/7776).
On some Linux systems, it's possible to run [multiple PgBouncer instances on On some Linux systems, it's possible to run [multiple PgBouncer instances on
the same port](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4796). the same port](https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4796).
...@@ -158,9 +158,9 @@ avoid saturating a single core. ...@@ -158,9 +158,9 @@ avoid saturating a single core.
In addition, the PgBouncer instances that communicate with the primary In addition, the PgBouncer instances that communicate with the primary
and secondaries are set up a bit differently: and secondaries are set up a bit differently:
1. Multiple PgBouncer instances in different availability zones talk to the - Multiple PgBouncer instances in different availability zones talk to the
PostgreSQL primary PostgreSQL primary.
1. Multiple PgBouncer processes are colocated with PostgreSQL read replicas - Multiple PgBouncer processes are colocated with PostgreSQL read replicas.
For replicas, colocating is advantageous because it reduces network hops For replicas, colocating is advantageous because it reduces network hops
and hence latency. However, for the primary, colocating is and hence latency. However, for the primary, colocating is
...@@ -211,10 +211,10 @@ Redis process. ...@@ -211,10 +211,10 @@ Redis process.
#### High availability/Risks #### High availability/Risks
1. Single-core: Like PgBouncer, a single Redis process can only use one Single-core: Like PgBouncer, a single Redis process can only use one
core. It does not support multi-threading. core. It does not support multi-threading.
1. Dumb secondaries: Redis secondaries (aka slaves) don't actually Dumb secondaries: Redis secondaries (aka slaves) don't actually
handle any load. Unlike PostgreSQL secondaries, they don't even serve handle any load. Unlike PostgreSQL secondaries, they don't even serve
read queries. They simply replicate data from the primary and take over read queries. They simply replicate data from the primary and take over
only when the primary fails. only when the primary fails.
...@@ -240,10 +240,10 @@ Sidekiq is a multi-threaded, background job processing system used in ...@@ -240,10 +240,10 @@ Sidekiq is a multi-threaded, background job processing system used in
Ruby on Rails applications. In GitLab, Sidekiq performs the heavy Ruby on Rails applications. In GitLab, Sidekiq performs the heavy
lifting of many activities, including: lifting of many activities, including:
1. Updating merge requests after a push - Updating merge requests after a push.
1. Sending e-mails - Sending e-mails.
1. Updating user authorizations - Updating user authorizations.
1. Processing CI builds and pipelines - Processing CI builds and pipelines.
The full list of jobs can be found in the The full list of jobs can be found in the
[app/workers](https://gitlab.com/gitlab-org/gitlab/tree/master/app/workers) [app/workers](https://gitlab.com/gitlab-org/gitlab/tree/master/app/workers)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment