هل يمكن جعل ذلك خيارًا في إعدادات الموقع لتحديد مقدار الذاكرة التي يمكن استخدامها؟ حاليًا، تم ضبط الضبط على 2 جيجابايت (تعديل: آسف، أنا مخطئ، انظر أدناه) — بينما كان سابقًا 4 جيجابايت — ومع ذلك فإن إعدادات الأجهزة الموصى بها هي 1 جيجابايت + مساحة تبديل. يبدو لي أن عقدة بسعة 1 جيجابايت قد تدخل في حالة من الفوضى في التبديل إذا كان استخدام روبي قد وصل فعليًا إلى 2 جيجابايت.
من سجل الترقية:
Migrating default
Seeding default
*** Bundling assets. This will take a while ***
$ RUBY_GC_MALLOC_LIMIT_MAX=20971520 RUBY_GC_OLDMALLOC_LIMIT_MAX=20971520 RUBY_GC_HEAP_GROWTH_MAX_SLOTS=50000 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=0.9 bundle exec rake assets:precompile
Purging temp files
Bundling assets
لقد اختبرنا هذه الإجراءية على مدار سنوات عديدة، ويمكننا ضمان نجاحها مع المجتمعات الصغيرة التي تستخدم خادمًا افتراضيًا بسعة 1 جيجابايت. بل إنها تقوم بإنهاء عمال يونيكورن إضافيين لاستعادة الذاكرة أثناء الترقية للمساعدة.
يمكنك قراءة الكود الذي جاء من هذا الالتزام:
إذا تمكّنت من إعادة إنتاج الفشل على قطرة من Digital Ocean، فسوف يسعدنا النظر في الأمر.
إذا كان ذلك ضروريًا، فيمكنك إنشاء نسخة من الإضافة (fork) وتعديلها وفقًا لاحتياجاتك.
شكرًا لك، لقد حصلت على الصورة الآن. (نقطتان مهمتان جدًا: تم ضبط إعدادات GC هذه خصيصًا للترقيات، والوحدات هي بايت، لذا فإن الحد المحدد حاليًا هو 20 ميجابايت. توجد تفاصيل مفيدة ومثيرة للاهتمام في هذا الموضوع السابق [رابط أرشيف لأنه غير متاح لي حاليًا].)
من المؤكد أنها قديمة؛ فأحدث إصدارات Ruby يحتوي على حدود متعددة لـ malloc. إنه موضوع مثير للاهتمام وله قيمة تاريخية، لكنه يحتاج إلى لافتة كبيرة تقول “قديمة” في الأعلى.
ترقيتنا تعمل بالفعل بأقصى قدر ممكن من الضيق، وأفضل ما يمكننا فعله فوق ذلك هو تقليل التوفر. إذا كانت الذاكرة مقيدة للغاية، فستضطر إلى تحمل فترات انقطاع عند الترقية.