Unexpectedly poor cache performance
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- docker, go
- Ambito
- backend, performance
Direzione di ricerca
Inizia riproducendo la configurazione di cache-handler con il comando ab fornito, confrontando il throughput con e senza cache per la piccola immagine. Analizza la direttiva di cache e il comportamento del backend di archiviazione descritti nel report; il lavoro è completato quando viene identificata la causa del rallentamento e viene convalidato un miglioramento delle prestazioni oppure viene documentata chiaramente una limitazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Caddy version: 2.9.1
The Problem:
When using the cache directive, the throughput of the given config block experiences a dramatic slowdown. On my system with 7950X testing using AB like so:
ab -k -t 60 -n 100000 -c 16 http://localhost:8080/image.png
Without caching: 85000-87000 requests per second
With caching: <3600 requests per second
image.png is a small (<20KiB) .png file of 185x250px dimensions.
Context:
For comparison, nginx in a similar scenario manages slower non-cached throughput (50-60k r/s), but dramatically faster cached throughput (15-17k r/s).
I tested versus nginx as my project presently uses its fork, Openresty (which is just nginx but with Lua scripting), to serve and cache static assets, and reverse proxy the main app. The expected production traffic consists of a high rate of requests against object storage backed image and thumbnail storage. It is crucial that this is cached (object storage egress costs money), and that the cache is performant enough to keep up with a high volume of requests.
If I were to switch to Caddy, the performance difference must not be too much worse.
The Config
{
cache
}
:80 {
route {
cache # the "no cache" test was done with this line commented-out
file_server {
root /var/www
}
}
}
Caddy is built via Docker like so:
ARG CADDY_VERSION="2.9.1"
FROM caddy:$CADDY_VERSION-builder-alpine AS builder
RUN xcaddy build \
--with github.com/caddyserver/cache-handler
FROM caddy:$CADDY_VERSION-alpine
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
EXPOSE 80
and ran like so
docker run --rm \
-it \
-v /home/luna/code/caddytest/config:/etc/caddy \
-v /home/luna/code/caddytest/data:/data \
-v /home/luna/code/caddytest/static:/var/www \
-p 8080:80 \
caddytest:latest
Needless to say, a very basic and barebones setup.
What I tried:
- Using a different storage backend for the caching module (tried otter, etcd)
- Putting it in a
handleblock - Using it without any
routeorhandleblocks
This performance discrepancy compared to our current setup with nginx is completely unacceptable and prevents me from moving ahead with using Caddy in production (as my resources rely caching having a high throughput).
- Lingua principale
- Go
- Stelle
- 396
- Fork
- 29
- Merge medio
- 32m
- PR unite (30g)
- 1
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di caddyserver/cache-handler
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
caddyserver/cache-handler#138 · 1 commento · 3 reazioni ·
-
Admin API purge/invalidation still panics with nil pointer on v0.16.0 (same root cause as #140)Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 76/100
caddyserver/cache-handler#143 · 2 commenti ·
-
Can not flush cacheAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
caddyserver/cache-handler#140 · 4 commenti · 1 reazione ·
-
`Incomming` has a typoAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 45/100
caddyserver/cache-handler#139 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
caddyserver/cache-handler#137 · 1 commento ·
Tutte le issue di caddyserver/cache-handler
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
evilmartians/lefthook#1588 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
kubernetes-sigs/kubebuilder#6084 ·
I maintainer di solito rispondono entro 3 giorni
-
agent-research-recommend agent-review-finding chore
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
jordansmall/spindrift#4821 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area:web
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
praetorianer777/GoTome#178 ·
I maintainer di solito rispondono entro 1 giorno