لقد أصبح تثبيت Discourse الخاص بي أبطأ وأبطأ وأبطأ خلال الأسابيع القليلة الماضية. في الماضي، عندما حدث هذا، كان إعادة بناء التطبيق يساعد. ومع ذلك، لا يبدو أنه يساعد الآن.
لقد بحثت عن نصائح في هذا المنتدى، وجربت بعض تحسينات قاعدة البيانات (vacuum full verbose، rebuild index، vacuum analyze verbose)
ومع ذلك، لا يبدو أن أيًا منها يساعد، وعندما أقوم بتشغيل الحاوية، يستغرق الأمر وقتًا طويلاً جدًا قبل أن أتمكن من الاتصال بالمنتدى فعليًا.
إذا استمر هذا، فسيصبح المنتدى غير قابل للاستخدام تمامًا في النهاية. أي فكرة من أين أبدأ البحث؟
يشير خرج vmstat هذا إلى أنه - في الوضع الحالي - لا توجد ذاكرة وصول عشوائي (RAM) كافية.
قد يكون Discourse يعمل كما ينبغي، وكل شيء على ما يرام، ولكن بياناتك قد نمت لدرجة أن 4 جيجابايت من ذاكرة الوصول العشوائي لم تعد كافية.
أو قد يكون هناك خطأ ما ويتم استخدام الكثير من ذاكرة الوصول العشوائي التي لا ينبغي استخدامها.
أحد مقاييس الحجم هو أخذ نسخة احتياطية - بدون المرفقات - ومعرفة حجمها.
قد يعطي mini-profiler تلميحًا حول إجراءات قاعدة البيانات التي تستغرق وقتًا طويلاً.
إذا كانت ميزانيتك تسمح بمضاعفة ذاكرة الوصول العشوائي، فافعل ذلك. (إذا حرصت على زيادة ذاكرة الوصول العشوائي مع ترك مساحة التخزين كما هي، إذا كان لديك هذا الخيار من مزود الخدمة الخاص بك، فيمكن أن يكون هذا تغييرًا قابلاً للعكس وحتى مؤقتًا.)
إذا لم تتمكن من تحمل تكلفة ذاكرة وصول عشوائي إضافية، يمكنك محاولة تعيين قيم أقل لـ db_shared_buffers (مثل 128 ميجابايت أو أقل) وتحديد UNICORN_WORKERS إلى 2 فقط في الوقت الحالي، حيث تحتاج إلى إيقاف التبديل في أسرع وقت ممكن.
ذاكرة الوصول العشوائي (RAM) الإضافية باهظة الثمن من مزود الاستضافة الخاص بي، لذا سأستكشف خيارات أخرى أولاً. (وأنا قلق من أن تغييرها سيكسر سعري المضمون…)
لقد غيرت db_shared_buffers إلى 128 ميجابايت و UNICORN_WORKERS إلى 2.
هل launcher app stop / start كافٍ لجعل هذه الإعدادات تسري المفعول؟
باستخدام Alt+P على لوحة المفاتيح، ستؤدي إجراءات المنتدى اللاحقة إلى عرض سلسلة توقيت أسفل لافتة المنتدى مباشرةً (بالنسبة لي، على اليمين) وإذا نقرت على التوقيت، سترى نافذة منبثقة تحتوي على بعض الإحصائيات.
هذا تقريبًا نفس حجم جهازي، يعمل بذاكرة وصول عشوائي (RAM) بسعة 1 جيجابايت. لدي 2000 موضوع، 15000 مشاركة، وأكثر من 500 تسجيل.
ما هو تاريخ Discourse الخاص بك؟ أتذكر بشكل خافت وقتًا في الماضي كان من المفترض فيه إنشاء فهرس لبعض الجداول لأسباب تتعلق بالأداء.
ماذا عن الإضافات؟ هل يمكنك تشغيل الإجراءات في الوضع الآمن لمعرفة ما إذا كانت تعمل بشكل أسرع؟
أعتقد أنني لاحظت أن خادمك مُعد لاستخدام hypervisor بينما خادمي مُعد لاستخدام lxc. لا أعرف ما إذا كان ذلك مهمًا. (يُظهر نظامي عملية /usr/bin/lxcfs والتي لا تظهر في نظامك، ويُظهر نظامك عملية hv_vss_daemon والتي لا تظهر في نظامي.)
أتفق مع موقف متشكك بشأن هذا! لكنني لا أقترح ذلك بلا جدوى - أنا متأكد من أننا رأينا حالة لنظام يعمل لفترة طويلة تحسن مع إعادة التشغيل. (تعديل: هنا، على الرغم من أنها كانت حالة مختلفة.)