Nous venons de passer de la version 3.0.6 à la 3.1.2 et nous constatons de nombreuses erreurs 503 à 3 points principaux :
De nombreux avatars ne se chargent pas
Les téléchargements d’images ne fonctionnent que parfois
Nous constatons également de nombreuses erreurs pour topics/timings
J’ai consulté les journaux du serveur, et la plupart des 503 n’apparaissent même pas dans production.log, mais nginx en est plein. Pensant qu’il pourrait s’agir d’une limitation de débit par nginx, j’ai essayé de ne pas utiliser templates/web.ratelimited.template.yml mais cela n’a pas semblé aider. Je constate toujours un nombre élevé de requêtes répondant par 503, principalement user_avatars/show et d’après ce que j’ai compris, production.log ne semble pas les voir du tout.
Je ne remarque rien de mal dans sidekiq. Cependant, /logs a eu des erreurs avec :
'hijack user_avatars show ' est toujours en cours d'exécution après 90 secondes sur la base de données par défaut, ce processus peut nécessiter un redémarrage !
mais c’était il y a quelques heures et j’ai reconstruit l’instance plusieurs fois depuis et elles ne sont pas réapparues.
Cette instance utilise le SSO, donc les avatars (URL) proviennent de là. Nous utilisons S3 pour les images.
Je suis un peu perplexe quant à la cause de ce problème et je suis à court d’idées.
Le serveur dispose de 16 Go et fonctionne correctement depuis des mois avant la mise à jour.
Il s’agit d’une instance AWS et celle-ci a été démarrée aujourd’hui, peu avant la mise à jour (les données de Discourse se trouvent sur des volumes EBS) pour modifier des paramètres sans rapport.
Le trafic réseau (entrant et sortant) a considérablement augmenté après la mise à jour : les avatars semblent fonctionner quelques secondes après le 503 initial, je suppose donc qu’un processus s’exécute la première fois qu’ils sont demandés.
Cependant, je ne comprends pas pourquoi les téléchargements d’images échouent de manière aléatoire, ainsi que le point de terminaison topics/timings.
Je ne suis pas sûr que cela puisse être lié à ceci :
Se pourrait-il que ce processus de mise à jour de l’arrière-plan des avatars atteigne la limite de débit de 3500 PUT/s sur AWS, provoquant l’échec des téléchargements réguliers pendant la mise à jour des avatars ? /cc @sam
La mise à jour a été effectuée le matin du 21. Le trafic réseau entrant semble se normaliser maintenant. Le trafic sortant est toujours plus élevé que d’habitude, mais je suppose que c’est pendant que les avatars sont mis en cache. La quantité de 503 vers user_avatars/show est beaucoup plus faible maintenant. Je suppose que cela sera progressivement résolu au fil du temps à mesure que plus d’avatars seront traités.
Cependant, nous constatons toujours de nombreuses erreurs 503 dans les journaux pour deux autres points de terminaison principaux :
POST /topics/timings
Toujours de nombreuses erreurs 503 vers ce point de terminaison et certains utilisateurs signalent que les sujets visités ne sont pas marqués comme lus. Je n’ai trouvé aucune information à ce sujet car la requête ne semble pas être enregistrée dans production.log du tout. Les /logs ne montrent rien de pertinent.
Où pourrait-on commencer à déboguer ces 503 ? Existe-t-il d’autres journaux dont j’ignore l’existence, ou existe-t-il un moyen de rendre les journaux plus verbeux (sur un système de production) ?
POST /uploads.json?client_id=....
Tout ce que je trouve dans production.log pour ces erreurs 503 ressemble à ceci :
Extrait de 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)
Nos utilisateurs signalent qu’ils réessayent plusieurs fois jusqu’à ce que cela fonctionne… Je suis capable de reproduire l’erreur de manière plus ou moins cohérente si j’essaie de télécharger (un autre) fichier pendant qu’un autre est encore en cours de téléchargement. Le téléchargement un par un semble moins sujet à cela pour une raison quelconque.
# 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