مزيد من التفاصيل حول كيفية استخدام ذاكرة التخزين المؤقت لـ Redis؟

مرحبًا!

أجريت بعض اختبارات الحمل على نسخة من Discourse، ولاحظت أنه عند جلب خيط التعليقات نفسه مرارًا وتكرارًا، انخفضت نسبة نجاح التخزين المؤقت في Redis بدلاً من ارتفاعها، وهو أمر غير متوقع إلى حد ما (لخليط من عمليات القراءة/الكتابة، شهدنا نسبة نجاح تصل إلى 85%، أما في حالة القراءة بنسبة 100% فقد انخفضت النسبة إلى ما يصل إلى 22%).

قمت بالبحث في قاعدة الكود وفي المنتديات هنا، ولا يزال لي واضح تمامًا كيف يُستفاد من التخزين المؤقت في Redis بالضبط. يذكر ملف README ما يلي:

نستخدم Redis كـ تخزين مؤقت وللمؤقتات المؤقتة.

استخدمت أمر redis-cli لتفريغ الأوامر المرسلة إلى تخزين Redis المؤقت أثناء اختبار الحمل المذكور أعلاه، ورأيت في الغالب أوامر “get” للمهام المجدولة وللمفاتيح التي تبدأ بـ “__mb_backlog_id_n_” (أعتقد أن هذا يشير إلى أمور MessageBus).

لدي الأسئلة التالية:

  • هل توجد طريقة “سهلة” للبحث في قاعدة الكود لمعرفة أي أجزاء من البيانات يتم تخزينها مؤقتًا في Redis؟ سأحب جدًا أن أتمكن من الإجابة على هذه الأسئلة بنفسي، لكنني للأسف لست على دراية كافية بتطبيقات Ruby on Rails (أو حتى Ruby بشكل عام حقًا). :slight_smile:
  • هل يؤثر تسجيل الدخول/تسجيل الخروج على معدلات نجاح التخزين المؤقت؟ للمرجعية، كان اختبار الحمل المذكور أعلاه يستخدم مفتاح واجهة برمجة تطبيقات (API) خاصًا بمسؤول.
  • هل يتم تخزين البيانات التي تُستعلم عنها بشكل متكرر أو الثابتة نسبيًا مثل محتويات المنشورات في Redis؟ أم أن Redis يُستخدم في المقام الأول لجدولة المهام ومعالجة الخلفية باستخدام Sidekiq وما شابه؟

شكرًا مقدّمًا!

4 إعجابات

هذا هو الجانب الرئيسي هنا. يحدث التخزين المؤقت الأكثر عدوانية للطلبات المجهولة، لذا أقترح إعادة اختبار التحميل مع بعض الروبوتات المجهولة.

هناك عدد قليل من الطرق القابلة للبحث باستخدام grep، مثل Discourse.cache.fetch و DistributedCache.new.

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

يُستخدم Redis بكثافة لـ Sidekiq و MessageBus.

7 إعجابات

رائع، شكرًا لك على الرد المفيد للغاية!

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

أعدت تشغيل اختبار الحمل للتو ولكن مع طلبات مجهولة هذه المرة، ولاحظنا تحسناً هائلاً في الأداء! سابقاً، كنا نستطيع فقط تحقيق حوالي 25 طلباً في الثانية على مضيف واحد، والآن يمكننا الوصول إلى 380! كما ارتفعت نسبة نجاح ذاكرة التخزين المؤقت Redis من حوالي 22% إلى حوالي 66%. :slight_smile:

فكرت فقط في العودة بنتائج الاختبار في حال كان هناك فضول لدى أي شخص.

شكراً جزيلاً مرة أخرى على المساعدة!

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

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.