Confermo che non era un DDoS ma un DoS non volontario. Un utente ha aperto la discussione sul collaudo di dicembre, che contiene circa 50 immagini che non erano presenti nella cache della CDN. Il browser (Safari iOS) ha quindi fatto richiesta nello stesso secondo di queste 50 immagini, o meglio le anteprime, che il server ha iniziato a generare in contemporanea mandando il load alle stelle. È poi scattata la protezione DDoS di Cloudflare perché è collegata al carico.
Era successo altre volte nei giorni scorsi ma non avevo capito quale fosse il problema. Ora ho introdotto una cache eterna a livello di nginx delle thumbnail generate, in modo che se non è la CDN ad averle in cache le ha probabilmente nginx. Ho anche aggiunto un rate limiter che limita il numero di immagini ridimensionate generabili ogni secondo, e quelle in eccesso vengono distribuite nei secondi successivi.