الكثير من أخطاء HTTP 502 و429 بعد التحديث إلى 3.4.0.beta1-dev

إصدار Discourse: 3.4.0.beta1-dev (bf3d8a0a94)

تم التحديث بالأمس واضطررت إلى تعطيل التصغير (minify) من Cloudflare كما هو مقترح هنا:

ومع ذلك، منذ ذلك الحين، واجه العديد من المستخدمين (بما فيهم أنا) عدة حالات من أخطاء 502 (بوابة سيئة) و 529 (طلبات كثيرة جدًا).

في محاولة لتخفيف المشكلة، اتبعت هذا الدليل أيضًا:

ومع ذلك، لا يبدو أن هناك أي تغيير في تكرار هذه الأخطاء.

حدث التحديث بالأمس حوالي الساعة 11 صباحًا. قمت بإعادة بناء كاملة لأنني أردت تعطيل إضافة أيضًا.

لدي مثيل Prometheus+Grafana لمراقبة الخادم و Discourse، لكن الخادم يبدو جيدًا من حيث التحميل:

مقاييس Discourse (الانخفاض في المقاييس حوالي الساعة 11 صباحًا بالأمس هو إعادة البناء التي أدت إلى إيقاف الحاوية):

مرة أخرى، لا أرى أي نمط غريب.

ومع ذلك، هذه هي وحدة تحكم المتصفح قبل دقيقة، بعد محاولة إرسال رسالة خاصة إلى مستخدم:

إذا كان هناك أي شيء آخر يمكنني تقديمه (سجلات من أي نوع)، فيرجى السؤال. شكراً.

آه، إذا كان ذلك يساعد، فإن العديد من العمليات “الخلفية” في الوقت الفعلي تتأخر بوضوح أيضًا.

على سبيل المثال، لا يتم تسجيل المواضيع التي تمت قراءتها بالفعل على أنها مقروءة.

فقط للتأكد، لقد قمت بهذه الخطوة أيضًا، ثم أعدت البناء، صحيح؟

إعجاب واحد (1)

نعم، آسف، لقد نسيت أن أضيف، لقد أضفت بالفعل قالب Cloudflare إلى ملف app.yml منذ وقت طويل. لقد كنا دائمًا خلف Cloudflare، منذ اليوم الأول.

هذا جزء من app.yml، لدينا شهاداتنا الخاصة التي يتم تجديدها بشكل مستقل، ولهذا السبب تم التعليق على شهادة letsencrypt:

## هذا هو القالب المتكامل والمستقل لحاوية Discourse Docker
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن حذرًا جدًا عند التحرير!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البيضاء أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف حسب الحاجة

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## قم بإلغاء التعليق على هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

## ما هي منافذ TCP/IP التي يجب أن تعرضها هذه الحاوية؟
## إذا كنت تريد أن تشارك Discourse منفذًا مع خادم ويب آخر مثل Apache أو nginx،
## انظر https://meta.discourse.org/t/17247 للحصول على التفاصيل
expose:
  - "80:80"   # http
  - "443:443" # https

[...]

مقتطف من /logs

أرى أن هذا تم نقله إلى #installation، للتوضيح فقط، هذه ليست عملية تثبيت جديدة.

هذه النسخة من discourse تعمل منذ مارس 2023 ولم تواجه هذه المشكلة المحددة من قبل.

كانت هناك مشكلة في الماضي مع بعض 529 ولكن تم حلها منذ ذلك الحين.

أعتقد أنها لا تزال مناسبة لـ

4 إعجابات

يبدو أن PostgreSQL الخاص بك مُثقل. يبدو أن معظم ذاكرة الوصول العشوائي لديك غير مستخدمة، سأحاول ضبط قاعدة البيانات لاستخدامها ومعرفة كيف تسير الأمور بعد ذلك.

إعجاب واحد (1)

كيف يبدو /sidekiq/queues؟
من أي إصدار كنت تقوم بالتحديث؟

إعجاب واحد (1)

من آخر إصدار مستقر بتاريخ 6 مايو، v3.2.1 إلى آخر إصدار test-passed.

قوائم انتظار Sidekiq:

قسم المهام الميتة (Dead job) هو هذا ولكنه يبدو نفس المهمة منذ بداية الزمن.

أقدم الإدخالات:

يبدو أن المهام الموجودة في قائمة إعادة المحاولة (retry) هي نفس المهمة التي يتم إعادة محاولتها مرارًا وتكرارًا.

ولكن… لماذا فجأة؟ بعد تحديث لطبقة التطبيق فقط؟

أنا أستخدم إضافة discourse prometheus exporter.
إذا أضفت مُصدِّر PostgreSQL كحاوية أخرى على الجهاز الظاهري، فهل سيكون من الممكن السماح له بالوصول إلى المقاييس في تثبيت PostgreSQL الخاص بـ discourse؟

أي اتجاه أكثر دقة حول كيفية ضبط قاعدة البيانات للمناقشة؟

لست متأكدًا مما إذا كان هذا مرتبطًا، ولكنه بالتأكيد بدأ في الحدوث بعد التحديث، والنقر على زر الرفض في علامة التبويب غير المقروءة يعيد دائمًا خطأ 503.

حسنًا، بما أنه لا يبدو أن هناك حلاً، سأحاول العودة إلى أحدث إصدار stable كما يفترض أن يكون… كما تعلم، مستقر.

أصلي ألا يكون هناك تبعية أساسية تكسر عملية البناء، كما حدث في المرة الأخيرة.

لا يمكنك العودة من tests-passed إلى stable، إلا إذا كان هناك إصدار stable أعلى متاح. لذا فإن فرصتك التالية هي عندما يصدر 3.4.0، وأعتقد أن ذلك سيكون حوالي عيد الميلاد أو بعده…

علاوة على ذلك، سيتعين عليك تحمل الأمر يومًا ما.

إعجاب واحد (1)

حسنًا، لقد فعلت ذلك للتو. يبدو أنه يعمل. نحن لا نهتم بأي من الميزات الموجودة في 3.3.0 على أي حال.

سأرى ما إذا كانت لا تزال هناك مشاكل. أسوأ ما يمكن أن يحدث هو أننا ما زلنا نحصل على وفرة من 429 و 502، وليس تغييرًا كبيرًا.

سأقدر التوجيهات حول كيفية تكوين Postgres على discourse بحيث تتوفر له المزيد من الموارد، على الرغم من ذلك.

تعديل: تم نشر الإصدار 3.2.5. يبدو النظام مستقرًا.

يرجى تذكيرنا بأنك فعلت ذلك عندما تنشر مشكلتك التالية :wink:

إعجاب واحد (1)

أنا دائمًا أذكر الإصدار الذي أعمل عليه عند نشر مشكلة.
أعتقد أنه من المهم أن نتذكر أنه بالضبط لأن هذا يُقدم كبرنامج مفتوح المصدر، يجب النظر في المشكلات الحرجة بدلاً من كتابة أشياء مثل هذه:

هذا مثال آخر على الأشخاص الذين يبذلون جهدًا إضافيًا وينتقلون إلى الإصدار “stable” ويواجهون بعض الأخطاء التي تقع بين الشقوق لأنها ليست الإصدار الأكثر استخدامًا.

عندما يجب أن تعني “stable” “مستقر”، وليس “قديم”.
حقيقة أن التبعيات الأساسية مثل discourse docker يتم دفعها بدون نظام علامات يجب أن تكون كافية للتواضع قليلاً عند الرد على المستخدمين الذين يبلغون عن مشكلة.

كنت أتحدث عن ذكر حقيقة أنك قمت بالترقية عندما لم تتمكن تقنيًا من ذلك.

أعتقد أنه من المهم أن تتذكر… أنني لا أعمل لدى Discourse وأنني أساعدك في وقتي الخاص، لذلك لا أقدر نبرتك، ولست قادرًا على فعل أي شيء بملاحظاتك.

إعجابَين (2)

إعجابَين (2)