Abbiamo appena aggiornato da 3.0.6 a 3.1.2 e stiamo riscontrando molti errori 503 principalmente in 3 punti:
Molti avatar non vengono caricati
Il caricamento delle immagini funziona solo a volte
Stiamo anche riscontrando molti errori per topics/timings
Ho controllato i log del server e la maggior parte dei 503 non viene nemmeno visualizzata in production.log, ma nginx ne è pieno. Pensando che potesse essere il rate limiting di nginx, ho provato a non usare templates/web.ratelimited.template.yml ma non è sembrato aiutare. Sto ancora riscontrando un’elevata quantità di richieste a cui viene risposto con 503, principalmente user_avatars/show e da quello che ho capito, production.log sembra non vederle affatto.
Non noto nulla di sbagliato in sidekiq. Tuttavia, /logs ha avuto errori con:
'hijack user_avatars show ' è ancora in esecuzione dopo 90 secondi sul database predefinito, questo processo potrebbe dover essere riavviato!
ma questi erano un paio d’ore fa e ho ricostruito l’istanza un paio di volte da allora e non si sono più ripresentati.
Questa istanza utilizza SSO, quindi gli avatar (url) provengono da lì. Usiamo S3 per le immagini.
Sono un po’ perplesso su cosa stia causando questo e ho esaurito le idee.
Il server ha 16 GB e ha funzionato bene per mesi prima dell’aggiornamento.
È un’istanza AWS e questa è stata avviata oggi, poco prima dell’aggiornamento (i dati di Discourse si trovano sui volumi EBS) per modificare alcuni parametri non correlati.
Il traffico di rete (in entrata e in uscita) è aumentato significativamente dopo l’aggiornamento: gli avatar sembrano funzionare pochi secondi dopo il 503 iniziale, quindi immagino che ci sia qualche processo in esecuzione la prima volta che vengono richiesti.
Tuttavia, non capisco perché i caricamenti di immagini falliscano casualmente, così come l’endpoint topics/timings.
Non sono sicuro se possa essere correlato a questo:
Potrebbe essere che questo processo di aggiornamento in background degli avatar stia raggiungendo il limite di 3500 PUT/s su AWS, causando il fallimento dei caricamenti regolari mentre gli avatar vengono aggiornati? /cc @sam
L’aggiornamento è stato eseguito la mattina del 21. Il traffico di rete in entrata sembra normalizzarsi ora. Quello in uscita è ancora più alto del solito, ma immagino sia mentre le immagini del profilo vengono memorizzate nella cache. La quantità di 503 verso user_avatars/show è molto più piccola ora. Suppongo che questi verranno lentamente risolti nel tempo man mano che più immagini del profilo vengono elaborate.
Tuttavia, stiamo ancora riscontrando molti errori 503 nei log per principalmente altri due endpoint:
POST /topics/timings
Ancora molti errori 503 verso questo endpoint e alcuni utenti segnalano che gli argomenti visitati non vengono contrassegnati come letti. Non ho trovato alcuna informazione al riguardo poiché la richiesta non sembra essere registrata affatto su production.log. I /logs non mostrano nulla di correlato.
Dove si potrebbe andare per eseguire il debug di questi 503? Ci sono altri log di cui non sono a conoscenza, o c’è un modo per rendere i log più dettagliati (su un sistema di produzione)?
POST /uploads.json?client_id=....
Tutto ciò che trovo su production.log per questi errori 503 è simile a questo:
Estratto da production.log
> Started POST “/uploads.json?client_id=X” for x.x.x.x at 2023-10-24 10:24:55 +0000
Processing by UploadsController#create as JSON
Parameters: {“upload_type”=>“composer”, “relativePath”=>“null”, “name”=>“Screenshot 2023-10-24 at 11.22.32.png”, “type”=>“image/png”, “sha1_checksum”=>“d1f11731320437724003c3840c5dcc5f934ba25a”, “file”=>#<ActionDispatch::Http::UploadedFile:0x00007f3c5e3c9898 @tempfile=#Tempfile:/tmp/RackMultipart20231024-1991-b30vit.png, @content_type=“image/png”, @original_filename=“Screenshot 2023-10-24 at 11.22.32.png”, @headers=“Content-Disposition: form-data; name="file"; filename="Screenshot 2023-10-24 at 11.22.32.png"\r\nContent-Type: image/png\r\n”>, “client_id”=>“X”}
Rendered text template (Duration: 0.0ms | Allocations: 1) Completed 503 Service Unavailable in 10ms (Views: 0.4ms | ActiveRecord: 0.0ms | Allocations: 5007)
I nostri utenti segnalano che riprovano alcune volte finché non funziona… Riesco a riprodurre l’errore in modo più o meno coerente se provo a caricare (un altro) file mentre uno è ancora in fase di caricamento. Caricarli uno per uno sembra meno incline al problema per qualche motivo.
# free -h
total used free shared buff/cache available
Mem: 15Gi 3.8Gi 621Mi 1.1Gi 10Gi 10Gi
# lscpu --parse=core | egrep -v # | sort -u | wc -l
2