كيفية ضبط المعلمات لموقع حركة المرور الكبيرة والثقيلة؟

أنا أدير مجتمعًا يضم 38 ألف مستخدم على جهاز افتراضي بـ 24 نواة و 64 جيجابايت. قمت بتعيين DISCOURSE_UNICORN_WORKERS إلى 48.

مؤخرًا، يبدو أن الموقع يستجيب ببطء بعد وصول عدد المستخدمين الفريدين إلى 20 ألفًا في يوم واحد وعدد الزيارات إلى 500 ألف. يتلقى المستخدمون إشعاراتهم بعد عدة ساعات من حدوثها فعليًا.

حمل وحدة المعالجة المركزية يبلغ حوالي 15٪. لذلك أعتقد أن هذا يرجع إلى قلة عدد عمال Sidekiq وقمت بتعيين DISCOURSE_UNICORN_SIDEKIQS إلى 10 و DISCOURSE_DB_POOL إلى 13. لكن هذا تسبب في العديد من أخطاء 500 في العديد من الصفحات. وأعتقد أن هذا كبير جدًا بالنسبة لـ PostgreSQL.

لذلك، أتساءل عما إذا كان Discourse يتوسع تلقائيًا إلى خادم بـ 24 نواة دون إعداد يدوي؟ أو كيف يمكنني تعيين المعلمات المتزامنة المناسبة لموقع كبير مثلي؟

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

أسهل طريقة وجدتها لتوسيع نطاق الموارد تلقائيًا هي إعادة تشغيل ./discourse-setup الذي يعيد إنشاء app.yml بقيم جديدة للمعلمات ذات الصلة.

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

هناك عدد قليل من المواضيع حول ضبط المواقع الكبيرة. من المحتمل أن تحتاج إلى منح postgres المزيد من الذاكرة.

إعجابَين (2)

نعم، لقد حاولت تعديل max_connections و shared_buffers في Postgres ويبدو أن الأمر يعمل.

يمكنني رؤية تغيير db_shared_buffers في app.yml، ولكن يبدو أن shared_buffers الخاص بـ Postgres داخل الحاوية لم يتغير.
على أي حال، تم حل مشكلتي إلى حد كبير. شكراً جزيلاً.

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