Unexpectedly poor cache performance
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- docker, go
- Domaine
- backend, performance
Piste de recherche
Commencez par reproduire la configuration de cache-handler avec la commande ab fournie, en comparant le débit avec et sans cache pour la petite image. Examinez la directive de cache et le comportement du backend de stockage décrits dans le rapport ; le travail est terminé lorsque la source du ralentissement est identifiée et qu’une amélioration des performances est validée ou qu’une limitation est clairement documentée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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).
- Langage dominant
- Go
- Étoiles
- 394
- Forks
- 30
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de caddyserver/cache-handler
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
caddyserver/cache-handler#138 · 1 commentaire · 3 réactions ·
-
Difficulté 3/5 Une demi-journée Accessibilité débutants 45/100
caddyserver/cache-handler#146 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
caddyserver/cache-handler#145 ·
-
Admin API purge/invalidation still panics with nil pointer on v0.16.0 (same root cause as #140)Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 76/100
caddyserver/cache-handler#143 · 2 commentaires ·
-
Can not flush cacheOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
caddyserver/cache-handler#140 · 4 commentaires · 1 réaction ·
Toutes les issues de caddyserver/cache-handler
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
router-for-me/CLIProxyAPI#7209 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Azure/azure-storage-azcopy#3674 ·
Les mainteneurs répondent en général sous 1 jour
-
date_time, url_encode, html_escape, to_unix_time, contains_all and contains_any panic when called without argumentsPeut-être pris @antcybersec l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
projectdiscovery/dsl#372 ·
Les mainteneurs répondent en général sous 1 jour
-
blocked-needs-validation
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
projectcapsule/capsule#2265 ·
Les mainteneurs répondent en général sous 1 jour
-
Remove "Model catalog refresh unavailable" warning from OpenRouter agent runsPeut-être pris @superplanehq-integration l’a pris aujourd’hui. Ouvertesuperplane
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
superplanehq/superplane#9164 ·
Les mainteneurs répondent en général sous 1 jour