diff options
| author | Jonathan Amsterdam <jba@google.com> | 2021-09-11 06:25:10 -0400 |
|---|---|---|
| committer | Jonathan Amsterdam <jba@google.com> | 2021-09-13 14:54:04 +0000 |
| commit | e13eb84a023012b1f045b2768b17cc1becbd849e (patch) | |
| tree | df972013954056f8beef6701429f6096abaad56f /internal/queue/queue.go | |
| parent | 148400792752015a69c2dfed94b20b19741b8559 (diff) | |
| download | go-x-pkgsite-e13eb84a023012b1f045b2768b17cc1becbd849e.tar.xz | |
internal/worker: load shed based on DB lock contention
If many DB processes are waiting for locks, shed load.
This is in addition to the existing load-shedding rule based on zip
size.
I conducted an informal experiment to see how this worked. I queued up
82 versions of github.com/aws/aws-sdk-go for processing. That module
has a small zip, so no shedding occurs because of zip size, but it
takes some time to process.
Without lock-based load-shedding, there were 157 "max serialization"
errors. Most of the time there were many active fetches in progress,
almost all waiting for locks.
With lock-based load-shedding, there were only 48 "max serialization"
errors. Most fetches completed quickly.
For golang/go#48010
Change-Id: I0cee02b9c4085a8bc187d803eaca2f30ddd378b5
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/349312
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
Reviewed-by: Julie Qiu <julie@golang.org>
Diffstat (limited to 'internal/queue/queue.go')
0 files changed, 0 insertions, 0 deletions
