أقوم بتشغيل خادم صغير (1 جيجابايت من ذاكرة الوصول العشوائي) وأيضًا موقع صغير (تثبيت discourse رسمي يعمل منذ ما يقرب من 8 سنوات الآن). هناك تبديل أقراص أكثر مما أود، لذلك بدأت في النظر إلى استخدام الذاكرة.
لاحظت أنني قمت بتعيين عدد الـ unicorns إلى 2 فقط منذ فترة للحد من استخدام الذاكرة (وتقليل التبديل). تشغيل إصدار discourse 3.1.0
ما الذي أفتقده هنا؟ لماذا لدي 20 unicorn قيد التشغيل بينما يذكر app.yml 2؟
هل هناك أي طرق أخرى لتقليل استخدام الذاكرة (على سبيل المثال، إذا قمت بتقليل db_shared_buffers إلى 128 ميجابايت، هل هناك أي آثار جانبية؟) هل يمكنني تقليل استخدام ذاكرة sidekiq؟
شكرا، مفيد جدا. ما هو العيب في الانتقال إلى عامل unicorn واحد فقط؟ هل سيؤدي ذلك إلى تحسين وقت الاستجابة أم تفاقمه (هل يقتصر عامل unicorn واحد على اتصال وارد واحد، أي هل سيجعل عاملان معالجة اتصال وارد واحد أسرع؟)، بافتراض أن لدي اتصالات قليلة فقط في الدقيقة؟
عندما أتصفح الموقع، هذا ما يبدو عليه vmstat 5 5، أي اقتراحات لتقليل التبديل (لقد قمت بتعيين swappiness على 10)؟
بالتأكيد يبدو أن موقعك سيكون أسرع إذا كان لديك المزيد من ذاكرة الوصول العشوائي (RAM). ولكن إذا لم يكن وقت الاستجابة مشكلة، فلا توجد مشكلة. فقط انظر إلى معادلة التكلفة/الفائدة الشخصية الخاصة بك.
قد تكون مهتمًا بقراءة تكوين نشر Discourse الرأي لـ MKJ. هناك عدد قليل من التعديلات على نواة النظام التي تعتبر فكرة جيدة. لا أعرف ما إذا كانت ستحدث فرقًا أم لا.
لا أعرف، لكن أعتقد أن كل “يونيكورن” (unicorn) يمكنه التعامل مع طلب واحد. لذلك إذا كان لديك “يونيكورن” واحد فقط، وحركة مرور كافية لطلب ثانٍ قبل اكتمال الطلب الأول، فسيتعين على هذا الطلب الثاني الانتظار. يمكنك أن ترى من مخرجات htop الخاصة بي أن “يونيكورن” واحد قد استهلك وقت معالجة (CPU) أعلى بـ 10 مرات من الآخر. أود أن أفسر ذلك على أن منتدى الخاص بي يحتاج في 90٪ من الوقت إلى “يونيكورن” واحد فقط، وفي 10٪ من الوقت يكون “اليونيكورن” الثاني مفيدًا. لا أشعر بالحاجة إلى إضافة “يونيكورن” ثالث، وقد لا يكون الأمر ذا أهمية كبيرة لأعضاء منتدى الخاص بي إذا انتقلت إلى “يونيكورن” واحد. لكنني لا أرى سببًا لذلك: قد يستهلك الذاكرة، ولكن إذا كان خاملاً فسيتم تبديله (swapped out). لا مشكلة كبيرة: دع نظام الذاكرة الافتراضية يتعامل مع الأمر.
تعديل: لم أقم بتعديل “swappiness” (مستوى العدوانية في التبديل) مطلقًا. يبدو أنه عند 60. قد يكون التبديل الأكثر عدوانية مفيدًا إذا حرر المزيد من ذاكرة الوصول العشوائي (RAM) لمخازن الإدخال/الإخراج المؤقتة (I/O buffers). لا أعرف.