تم اتباع دليل github، vps. ساعدني في تطبيق حدود ذاكرة الوصول العشوائي/وحدة المعالجة المركزية الافتراضية

(1)

هذا هو خادم افتراضي خاص يعمل بنظام Ubuntu 24. يستخدم Discourse بالفعل 10 جيجابايت من ذاكرة الوصول العشوائي. هذا غير مقبول.

يبدو أنه يبني أمر تشغيل Docker. بينما يتضمن هذا

–shm-size=512m

أفضل تطبيق قيود إضافية لوحدة المعالجة المركزية والذاكرة حيث لا أريده أن يستهلك 4c12r لأن حاويات Docker الأخرى ستعيش هنا. هل يمكنني ببساطة نسخ الأمر الناتج أم أنه مخزن في مكان ما. أخطط لإيقاف Docker وإزالة Docker لحقن

–cpu-shares=1100 --shm-size=512m --memory=4g --memory-swap=8g --kernel-memory=5500m

هل هناك طريقة أفضل لتطبيق هذه القيود؟

(2)

هل “app” هو حقًا اسم الحاوية؟ –name app

يعرض docker ps أن app هي الوحيدة من الحاويات التي تعمل

(3)

هذا ليس مشوشًا. الشاشة المراجعة قبل البدء أظهرت نطاق SMTP الخاص بمزودي.

DISCOURSE_SMTP_DOMAIN=discourse.example.com

لماذا هو حرفيًا الآن؟ كيف يمكنني إصلاحه. حقيقة ممتعة أنه تمكن من إرسال رابط تأكيد لي عبر البريد الإلكتروني

(4)

أمر تشغيل Docker مشوش قليلاً

/usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=a.shop -e DISCOURSE_DEVELOPER_EMAILS=x -e DISCOURSE_SMTP_ADDRESS=x -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=x -e DISCOURSE_SMTP_PASSWORD=Fx -e DISCOURSE_SMTP_DOMAIN=discourse.example.com -e DISCOURSE_NOTIFICATION_EMAIL=x -e LETSENCRYPT_ACCOUNT_EMAIL=x -h hoho-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address xx local_discourse/app /sbin/boot

لقد اتبعت هذه التعليمات

هذه إجابة مقدمة من ask.discourse.org. يرجى الإبلاغ عن فائدتها.


1. تعيين حدود ثابتة لوحدة المعالجة المركزية (CPU) والذاكرة العشوائية (RAM) لـ Discourse Docker

عند تثبيت Discourse على خادم افتراضي خاص (VPS) عبر دليل GitHub الرسمي، لا يتم تضمين حدود الموارد مثل --memory و--cpus افتراضيًا. بينما يمكنك إضافة هذه العلامات يدويًا إلى أمر تشغيل Docker، فإن أي تغييرات تتم مباشرة باستخدام docker stop وأمر docker run جديد ستُفقد بعد تشغيل ./launcher rebuild app. يقوم البرنامج النصي launcher دائمًا بإعادة إنشاء الحاوية.

الأساليب الموصى بها:

أ) تعديل البرنامج النصي للـ Launcher
لفرض حدود الموارد بشكل دائم، يجب عليك تعديل البرنامج النصي launcher الذي يستخدمه Discourse لبدء حاويات Docker. على سبيل المثال، حول السطر 289، قم بتكييف:

$docker_path run $restart_policy "${env[@]}" -h "`hostname`-$config" \
    -m="4g" --cpus="2.0" -e DOCKER_HOST_IP=$docker_ip ...

يضمن هذا أن كل ./launcher rebuild يقوم بإنشاء الحاوية بحدودك.

المصدر والمزيد من المعلومات:

ب) تحرير أمر Docker مباشرة
بينما من الممكن تقنيًا تشغيل Docker بحدود مخصصة عن طريق نسخ أمر docker run المعاد بناؤه، إلا أن هذا ليس دائمًا وغير موصى به.

لا توجد بعد طريقة رسمية ودائمة “مضمنة” لتمرير وسيطات Docker --memory أو --cpus لأدوات النشر القياسية لـ Discourse، بخلاف تعديل الـ launcher.


2. اسم الحاوية

افتراضيًا، يقوم الـ launcher الخاص بـ Discourse بتسمية الحاوية app. يمكنك تأكيد ذلك باستخدام docker ps. تغيير اسم الحاوية سيتطلب أيضًا تعديل الـ launcher أو القوالب مباشرة.
اقرأ المزيد: Discourse في حاوية Docker


روابط مفيدة


إذا كنت تبحث عن طريقة أكثر أناقة ودائمة (مثل قالب أو ميزة مدعومة في الـ launcher)، تحقق من هذا النقاش ذي الصلة:
مفاتيح لـ VPS مقيدة الموارد؟

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

رائع. بعد التأكد من إمكانية استعادة اللقطات كما أتوقع، سأجرب هذا الحل.
هل ترتبط الوحدات الأحادية مباشرة بـ 2x بعدد وحدات vCPU الخاصة بـ VPS؟