خيار shm_size في Docker في ملف app.yml

هل من الممكن جعل معلمة shm_size خيارًا في ملف app.yml؟ لقد واجهت هذا الخطأ اليوم عند محاولة تشغيل أمر vacuum analyze:

ERROR: could not resize shared memory segment

كان يحاول زيادة استخدام الذاكرة المشتركة إلى 1 جيجابايت وفشل، حيث أن الحد الافتراضي هو 512 ميجابايت فقط. يبدو أن هذه المعلمة موجودة في سكريبت التشغيل، ولكن قد يكون من الجيد توفيرها كخيار في ملف .yml (ربما يكون معلقًا بشكل افتراضي).

يمكنك تمرير وسائط Docker مخصصة لتجاوز الافتراضيات التي نوفرها باستخدام --docker-args.

أعتقد أنها ستبدو شيئًا مثل ./launcher start app --docker-args "--shm-size=1024m"

7 إعجابات

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

من المرجح أيضًا أن هذا لن يستمر عبر التحديثات/إعادة البناء - فستحتاج إلى تغييره يدويًا في كل مرة.

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

ما هي الأوامر التي نفذتها؟ سيتعين عليك بالتأكيد إعادة بناء الحاوية لكي تُطبَّق خيار --shm-size.

إعجابَين (2)

كل ما فعلته في البداية هو إيقاف الحاوية، ثم تشغيل أمر بدء المشغل مع ذلك المعلمة. بعد ذلك، قمت بتعديل معلمة --shm-size يدوياً داخل ملف المشغل نفسه وأعدت بناء الحاوية. عندها تم ضبط القيمة بشكل صحيح. إذا قمت بتجاوز المعلمة في سطر الأوامر لإعادة بناء الحاوية، ألا سيفقد التغيير عند إجراء تحديث أو إعادة بناء عبر واجهة /admin/upgrade؟ لهذا السبب اعتقدت أنه قد يكون من الأفضل جعلها حقلاً في ملف app.yml - بحيث ستبقى ثابتة حتى بعد إعادة البناء وتحديثات الكود.

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

هه، أرى أن هذا قد يكون مفيدًا. @sam ما رأيك في هذا؟

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

ومع ذلك، فإن هذا لا يعيد بناء الحاوية أبدًا، لذا فهو آمن.

أليس لدينا هذا بالفعل وفقًا لـ:

docker_args: .... في ملف الـ yaml الخاص بك.

لست متأكداً. هل هذا يعيد كتابة ملف المشغل نفسه؟ أرى ثلاثة أماكن حيث الخيار مُشفَّر بشكل ثابت:

ينبغي علينا إصلاح ذلك، لكن الإصلاح عبارة عن سكريبت باش معقد للغاية. لا تتردد في تجربة ذلك.

يجب أن تكون دالة الحصول على معلمات Docker مسؤولة عن shm-size، مع معالجة تجاوزات المستخدم وتحديد قيمة افتراضية.

إعجابَين (2)

مرحبًا @Ghan

في الوقت الراهن (لأغراض الاختبار، انظر التحذير أدناه)، يمكنك تغيير هذا مباشرةً باستخدام Docker بعد بناء الحاوية، على النحو التالي:

  • قم بتعديل ملف /var/lib/docker/containers/$CONTAINER_ID/hostconfig.json مباشرةً.
  • على سبيل المثال، غيّر قيمة ShmSize في الملف المذكور أعلاه.
  • أوقف الحاوية وأعد تشغيلها.

في ملف hostconfig الخاص بحاوية Docker لدينا، يبدو الأمر كما يلي:

"ShmSize":536870912,

آمل أن يكون ذلك مفيدًا.

تحذير: نشر بعض الأشخاص أنه يجب عليك التأكد من إيقاف خدمة Docker قبل تعديل ملف hostconfig.json (وإلا فستُستبدل التغييرات). ومع ذلك، لم أختبر هذا فعليًا. ومن الواضح أن حل launcher أفضل :slight_smile:

هل يعرف أحد الحل الحالي لزيادة shm_size؟

تعديل: يبدو أنه لا يزال مبرمجًا بشكل ثابت.

الموضوع ذو الصلة: