الاتصال بشبكة Redis الخاص بك يؤدي أداءً ضعيفًا جدًا

أواجه هذا باستمرار في السجلات - بقيم تتراوح بين ~ 100 ألف و ~ 1.35 مليون - ولكن القراءات القريبة من 100 ألف تبدو شائعة جدًا:

اتصال شبكة Redis الخاص بك ضعيف للغاية. كانت قراءات RTT الأخيرة [97069, 103986, 98459, 100762, 381617]، ومن المثالي أن تكون هذه أقل من 1000. تأكد من تشغيل Redis في نفس المنطقة المتاحة (AZ) أو مركز البيانات مثل Sidekiq. إذا كانت هذه القيم قريبة من 100,000، فهذا يعني أن عملية Sidekiq الخاصة بك قد تكون مشبعة بوحدة المعالجة المركزية؛ قلل من تزامنك و/أو راجع https://github.com/mperham/sidekiq/discussions/5039

يشير هذا إلى أن Redis قد لا يكون قادرًا على استخدام وحدة معالجة مركزية كافية؟ يبدو أن هناك متسعًا كبيرًا لوحدة المعالجة المركزية والذاكرة العشوائية على الخادم نفسه.

أيضًا:
يستهلك Sidekiq الكثير من الذاكرة (باستخدام: 3570.19M) لـ 'www.example.com'، وإعادة التشغيل

هذا يستخدم تطبيق app.yml الكل في واحد مع Discourse stable 3.3.2.

من app.yml:

UNICORN_SIDEKIQS: 9
DISCOURSE_SIDEKIQ_WORKERS: 5

أضفت هذا التكوين إلى المضيف أيضًا:

معلومات لوحة تحكم Sidekiq:


يبدو أن Redis غير قادر على تجاوز استخدام الذاكرة البالغ 1024 ميجابايت.

إذا كان لدى أي شخص أي أفكار، فسأكون ممتنًا! :meow_heart:

للمتابعة بشأن هذا الأمر، أواجه نفس المشكلة مع Jobs::PostAlert:

مع هذه المهام التي غالبًا ما تستغرق ما يصل إلى 15 دقيقة عند استخدام 4 من عمال Sidekiq مع 5 (افتراضي) خيوط مع الاختبار الحالي. يبدو أن سرعة المهام في الثانية لـ Sidekiq تعتمد بشكل كبير على عدد هذه المهام التي يتم تشغيلها في وقت واحد وعدد الخيوط المتاحة للمهام الأخرى.

زيادة عدد عمال Sidekiq إلى 6 أو أعلى (5 خيوط) ستزيد من سرعة مسح قائمة الانتظار، ولكن قاعدة بيانات postgres ستتعطل بانتظام (أفترض بسبب تشغيل عدد كبير جدًا من مهام Jobs::PostAlert في وقت واحد).

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

لا ينبغي أن يتعطل Postgres ويشير بشكل عام إلى خطأ في Postgres أو نوع من المشاكل الأكبر.

هل لديك سجلات؟

إعجابَين (2)

هل قمت بإعادة تشغيل الخادم منذ إجراء تغييرات تكوين النواة؟

ربما

lscpu

سيكون مفيدًا أيضًا

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

لا يجب عليك أبدًا زيادة UNICORN_SIDEKIQS إلى هذا الحد، وزيادة العمال فقط ولكن

لا ينبغي أن يحدث هذا أبدًا.

الاحتمالات هي:

  1. أنت مقيد بالموارد لأن إما
    أ) موقعك قد تجاوز موارد الخادم
    ب) أنت تسيء تخصيص الموارد
  2. هناك خطأ ما في المكدس

أود أن أبدأ بـ

UNICORN_SIDEKIQS: 1
DISCOURSE_SIDEKIQ_WORKERS: 20

مما يجب أن يحرر بعض ذاكرة الوصول العشوائي من الخادم الخاص بك.

لمزيد من المعلومات، ستحتاج إلى تشغيل الوظائف المخالفة في وحدة تحكم PostgreSQL والإبلاغ عن عنق الزجاجة.

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

أعتذر عن الاختفاء وشكراً لكم على الردود. :slight_smile:

أعتقد أن المشكلة الرئيسية لبطء Redis كانت أن خاصية THP كانت لا تزال مُفعلة (على الرغم من أنني كنت أعتقد خلاف ذلك):

بالنسبة لتعطل PG، كان الحل الرئيسي بالنسبة لي هو إضافة هذا إلى ملف app.yml:

docker_args:
  - "--shm-size=34g"

مع ضبط القيمة على db_shared_buffers + 2GB، حيث أن db_shared_buffers يمثل 25% من ذاكرة الوصول العشوائي (RAM) الإجمالية للجهاز المضيف.

تجاوز القيمة الافتراضية 512m:

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

لقد اطلعت على سجل منشوراتك، وأرى في مشكلة Sidekiq بطيئة جدًا … أعداد هائلة من إشعارات المستخدمين غير المقروءة أنك كنت تدير خادمًا بـ 32 نواة و 128 جيجابايت، مع قاعدة مستخدمين كبيرة ونشطة جدًا. لذلك في هذا السياق، أرى لماذا لا يعتبر 34 جيجابايت رقمًا كبيرًا جدًا! على سبيل التوضيح، قد يكون من المفيد (والمثير للاهتمام) معرفة حجم إعدادك - ربما هنا أو حتى في سيرتك الذاتية؟ (ربما عدد المستخدمين النشطين يوميًا وشهريًا، وحجم نسخ احتياطي قاعدة البيانات، وإعداد الخادم من حيث ذاكرة الوصول العشوائي (RAM)، والمبادلة (swap)، والقرص، ووحدات المعالجة المركزية (CPUs)). ربما حتى موضوع نشارك فيه إحصائياتنا - الكبيرة والصغيرة.