Unexpectedly poor cache performance
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- docker, go
- Área
- backend, performance
Línea de trabajo
Comienza reproduciendo la configuración de cache-handler con el comando ab proporcionado y comparando el rendimiento con caché y sin caché para la imagen pequeña. Investiga la directiva de caché y el comportamiento del backend de almacenamiento descritos en el informe; el trabajo estará terminado cuando se identifique el origen de la ralentización y se valide una mejora de rendimiento o se documente claramente una limitación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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).
- Lenguaje dominante
- Go
- Estrellas
- 395
- Forks
- 30
- Merge medio
- 32 min
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de caddyserver/cache-handler
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
caddyserver/cache-handler#138 · 1 comentario · 3 reacciones ·
-
Admin API purge/invalidation still panics with nil pointer on v0.16.0 (same root cause as #140)Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
caddyserver/cache-handler#143 · 2 comentarios ·
-
Can not flush cacheAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
caddyserver/cache-handler#140 · 4 comentarios · 1 reacción ·
-
`Incomming` has a typoAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 45/100
caddyserver/cache-handler#139 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
caddyserver/cache-handler#137 · 1 comentario ·
Todos los issues de caddyserver/cache-handler
Issues similares
-
bug frontend good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
oalders/clodhopper#133 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
peasant-labs/peasant#596 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
hatchet-dev/hatchet#5179 ·
Los mantenedores suelen responder en 1 día
-
bug triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
FairwindsOps/nova#484 ·