ruby-on-rails - ويندوز - حل مشكلة سحب الرامات




تقليل استهلاك الذاكرة في الأصول الخليع: بريكومبيلي (2)

مشكلة:
أنا نفد من ذاكرة الوصول العشوائي أثناء أداء rake assets:precompile مهمة rake assets:precompile في بناء الآلي. هل هناك أي استراتيجيات للقيام بريبكومبيل تدريجي، أو بطريقة أخرى أداء مرحلة بريكومبيل دون استهلاك الكثير من ذاكرة الوصول العشوائي؟ يبدو كما لو أن هذه المهمة تستهلك حوالي 850 ميغابايت أكثر من خط الأساس للبناء.

السياق :
أحاول الحصول على حاوية دوكر واحدة بيتبوكيت خطوط الأنابيب نسخة من البناء الآلي لدينا. يتضمن كومة التطبيق القضبان 4.2.7، بوستغريزل 9.3، جافا 8، مافين 3.3.9 و جروبي 9.1.2.0. لقد حاولت إنشاء صورة على أساس من ديبيان جيسي وأيضا من جبال الألب لينكس، لكنه لا يحدث فرقا كبيرا في الذاكرة الأساسية.


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


اجابة قصيرة

استخدام نوديجس كمترجم جافا سكريبت ل بريكومبيلينغ (أو مترجم جافا سكريبت آخر يتميز منخفضة الذروة استخدام ذاكرة الوصول العشوائي).

الجواب أطول

بالنسبة للسياق، وأنا باستخدام نوديجس 4.5.0 بالمقارنة مع ثيروبيراسر v0.12.2 و ثيروبيرهينو v2.0.4

يمكنك زيادة ذاكرة الوصول العشوائي؟

يبدو البكم، ولكن قبل تعقيد عملية البناء قد يكون من المنطقي لمعرفة ما إذا كان أكثر قدرة بناء آلات متاحة، أو إذا مساحة التبادل هو متاح (على الرغم من أنه من المرجح أن تزيد من بناء مرات).

هل يمكنك تبديل مترجم جافا سكريبت؟

يبدو أن استخدام ذاكرة الوصول العشوائي عالية الذروة أن تكون سمة أساسية لكل من ثيرابيرهينو (موزيلا في رينو جافا سكريبت مترجم) و ثيرابيراسر (V8 جافا سكريبت مترجم). هناك لا يبدو أن يكون وسيلة فعالة لانخفاض كبير في كمية من ذاكرة الوصول العشوائي المستهلكة خلال مرحلة ما قبل تجميع الأصول. يبدو أن أكثر المسارات قابلية للتطبيق هي تجميع البيانات قبل إنشاء دورة حياة البناء وتخزينها مؤقتا في مكان ما بحيث يمكن جلبها بدلا من التحويل المسبق ، كما يقترحها @ user4776684 . كما تشير التعليقات على السؤال، كل من القضبان النسخة وروبي الإصدار لها تأثير، ولكن ليس تقريبا بقدر مترجم جافا سكريبت.

إذا فشل كل شيء آخر

كما @ slowjack2k المذكورة أعلاه ، إذا كان استخدام باندلر ، يمكن الاستفادة من تكوين مواز لاستدعاء نوديجس فقط للمهمة بريكومبيل والحفاظ على بناء الأصلي لم يمسها نسبيا. لم أكن أنظر إلى هذا لأنه كان من الأسهل تبديل المترجمين، ولكن في حين كنت قادرا على بريكومبيلي الأصول مع أشعل النار و نوديجس، فإنها لا يبدو أن تعتبر بريكومبيلد عندما يتعلق الأمر اشتعال + ثيروبيهينو استدعاء حتى كانوا إعادة المترجمة مسبقا. لقد أنجزت هذا مع مجموعة متغيرة BUNDLE_GEMFILE بيئة متغيرة التي أشارت إلى جيمفيل منفصلة تماما، والتي تستخدم التصوير بالرنين المغناطيسي روبي و نوديجس بدلا من جروبي و ثيروبيرهينو.





bitbucket-pipelines