كانت تخميني الأول يشير إلى مشكلة في تحسينات Cloudflare - تأكد من إيقاف تشغيل “Rocket Launcher” (من المرجح أنه معطل بالفعل، لكن من الجيد التحقق من ذلك).
أيضًا، أعتقد أنك قد ترغب في تكوين تخزين كائنات دلو S3 باستخدام Cloudflare R2 إذا كنت ترغب في الاستمرار في استخدام الأجهزة التي تستخدمها حاليًا.
لقد ذكرت في محادثتنا أنك تستخدم بعض أقراص SSD القديمة المتبرع بها وقمت بتثبيتها قبل وقت قصير من بدء حدوث هذه المشكلة، وهو ما يُعد مؤشرًا قويًا على المشكلة - حيث تشير برامج Dell الثابتة (Firmware) إلى أنها تالفة، بينما يُظهر smartctl أنها تعمل بشكل طبيعي. أعتقد أن برنامج Dell الثابت يضيء باللون البرتقالي لأنه يكشف عن زمن استجابة عالي واستجابات I/O غير منتظمة أو دعم غير كافٍ للبرنامج الثابت. تطلب Discourse من الأقراص قراءة عشرات ملفات JavaScript المُجمَّعة في نفس الوقت تمامًا، وأقراص SSD القديمة غير المدعومة قد تتعثر تحت هذا الانفجار المفاجئ في عمليات I/O. يتعطل متحكم التخزين أثناء محاولة جلب البيانات، وينتهي الوقت المحدد له بعد 30 ثانية بالضبط - وهو مهلة شائعة لأجهزة SCSI/الأجهزة الكتلية.
نظرًا لأن الأقراص تتعطل لمدة 30 ثانية، فإن Discourse وRails/nginx يتعطلان أو ينتهي وقتهما المحدد أثناء محاولة جلب الملفات ويُرجعان خطأ 500. من المرجح أن Cloudflare تلتقط أخطاء 500 وتطبق رؤوسًا غير صحيحة ثم تمررها إلى المتصفح، مما يتسبب في ظهور NS_ERROR_CORRUPTED_CONTENT الذي تراه.
استبدل تلك الأقراص SSD، أو إذا كان لا بد من استخدامها، فاستخدم دلو تخزين كائنات لتفريغ أصول Discourse والرفع - يمكنك استخدام Cloudflare R2 المجاني المتوافق مع S3 (لديّ هذا النظام وهو يعمل بشكل جيد). عندها لن يحتاج خادمك إلى قراءة آلاف الملفات الصغيرة من تلك الأقراص SSD الفاشلة لأنه يتجاوز عنق الزجاجة في الأجهزة الخاصة بأصول الويب.