De nombreux assets renvoient aléatoirement une erreur 500

Ma première hypothèse était un problème d’optimisation de Cloudflare : assurez-vous que Rocket Loader est désactivé (ce qui est probablement le cas, mais une vérification ne fait pas de mal).

De plus, je pense que vous souhaiterez configurer le stockage d’objets du bucket S3 en utilisant Cloudflare R2 si vous voulez continuer à utiliser le matériel que vous utilisez actuellement.

Vous avez mentionné dans notre discussion que vous utilisiez quelques SSD plus anciens donnés que vous avez installés peu de temps avant que ce problème ne commence, ce qui est un indice accablant : le firmware Dell indique qu’ils sont défectueux, mais smartctl les affiche comme corrects. Je pense que le firmware Dell clignote en orange car il détecte une latence élevée et des réponses d’E/S erratiques ou un firmware non pris en charge. Discourse demande aux disques de lire des dizaines de fichiers JavaScript compilés tous en même temps, et les SSD plus anciens non pris en charge peuvent être saturés par cette soudaine rafale d’E/S. Le contrôleur de stockage se bloque en essayant d’obtenir les données, avec un timeout après exactement 30 secondes, ce qui correspond au délai d’attente par défaut courant pour les périphériques SCSI/block.

Puisque les disques se bloquent pendant 30 secondes, Discourse (Rails/Nginx) plante ou atteint le délai d’attente en essayant de récupérer les fichiers et renvoie une erreur 500. Cloudflare intercepte probablement ces erreurs 500, applique les mauvais en-têtes et les transmet au navigateur, ce qui provoque l’erreur NS_ERROR_CORRUPTED_CONTENT que vous observez.

Remplacez ces SSD, ou si vous tenez à les utiliser, utilisez un bucket de stockage d’objets pour décharger les actifs et les téléchargements de Discourse ; vous pouvez utiliser Cloudflare R2 (compatible S3 et gratuit, j’ai cette configuration et cela fonctionne bien). Ainsi, votre serveur n’aura pas besoin de lire des milliers de petits fichiers à partir de ces SSD défaillants, car il contournera le goulot d’étranglement matériel pour les actifs web.