it-swarm.asia

قتل الملحن أثناء التحديث

واجهت مشكلة ، حاولت تثبيت حزمة جديدة على مشروع laravel 4 الخاص بي. لكن عندما أركض php composer.phar update ، أحصل على هذا:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

لقد بحثت عن المشكلة في الإنترنت ورأيت أن الذاكرة هي المشكلة ، أعتقد أنني لا أملك ما يكفي من RAM ، لقد راجعت هذا الإصدار بحوالي 411 ميجابايت. هل الملحن حقا بحاجة الى مزيد من ذاكرة الوصول العشوائي؟ يمكن للشخص مساعدتي من فضلك؟

شكر

67
user3038158

عادةً ما تعني رسالة "Killed" العملية التي تستهلك الكثير من الذاكرة ، لذلك قد تحتاج ببساطة إلى إضافة المزيد من الذاكرة إلى نظامك إذا أمكن ذلك. في وقت كتابة هذه الإجابة ، اضطررت إلى زيادة ذاكرة الجهاز الظاهري إلى 768 ميجابايت على الأقل من أجل الحصول على composer update للعمل في بعض الحالات.

ومع ذلك ، إذا كنت تفعل هذا على خادم مباشر ، فلا ينبغي أن تستخدم composer update على الإطلاق. ما يجب عليك فعله هو:

  1. قم بتشغيل composer update في بيئة محلية (إما جهازك الفعلي المحلي ، أو في جهاز ظاهري للتطوير)
  2. قم بتحميل أو git Push ملف composer.lock
  3. قم بتشغيل composer install على الخادم المباشر

بعد ذلك ، سيتم قراءة composer install من ملف .lock ، مع جلب نفس الإصدارات بالضبط في كل مرة بدلاً من العثور على أحدث إصدارات كل حزمة. هذا يجعل تطبيقك أقل عرضة للكسر ، ويستخدم الملحن ذاكرة أقل.

اقرأ المزيد هنا: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

185
Andreas

إذا كنت مثلي ، فأنت تستخدم بعض الذاكرة الصغيرةVM ، مما يعني أن إنشاء ملف المبادلة يؤدي إلى الحيلة:

free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m

راجع للشغل ، لا تتردد في تحديد موقع/اسم ملف/حجم آخر للملف.
/var ربما ليس المكان الأفضل ، لكنني لا أعرف أي مكان سيكون ، ونادراً ما أهتم لأن الخوادم الصغيرة تستخدم غالبًا لأغراض الاختبار.

40
Balmipour

ذلك لأن استضافتك تنفد من الذاكرة ، يرجى مراجعة هذا البرنامج التعليمي

13
ivan.proskuryakov

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

  1. قد تنفد ببساطة من ذاكرة الوصول العشوائي. تمكين المبادلة: https://www.digitalocean.com/community/search؟query=how+to+add+swap (ملاحظة: أعتقد أن أفضل ممارسة تتمثل في إضافة قسم منفصل. دليل Digitalocean مناسب ل بيئة)
  2. service mysql stop (اقتل خدمات DB/mem-hog الخاصة بك لتحرير بعض RAM - لا تنس أن تبدأ من جديد!)
  3. استخدم جلسة طرفية ثانوية تعمل على top لمشاهدة استهلاك الذاكرة/المبادلة حتى تكتمل العملية.
  4. composer.phar update --prefer-dist -vvv (إخراج مطوّل [لا يزال معلقًا في بعض النقاط عند العمل] واستخدام ملفات distro Zip). ربما جرب --dry-run أيضًا؟
  5. يبدو أن الملحن يعرف أنه يعمل بشكل أبطأ في الإصدارات القديمة من PHP (على سبيل المثال ، 5.3x). كان لا يزال بطيئا في 5.5.9 بالنسبة لي ...
8
alirobe

مثال على إصلاح DigitalOcean الذي لا يتطلب تنشيط ذاكرة إضافية ، هذا مثال على 1 جيجابايت:

في تشغيل المحطة أدناه

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
Sudo /sbin/swapon /var/swap.1

الحل المذكور أعلاه سوف يعمل حتى إعادة التمهيد التالي ، بعد ذلك يجب إعادة تنشيط المبادلة. للاستمرار في ذلك بين عمليات إعادة التمهيد ، أضف ملف المبادلة إلى fstab:

Sudo nano /etc/fstab

فتح الملف أعلاه إضافة إضافة السطر أدناه إلى الملف

/var/swap.1 swap swap sw 0 0

الآن أعد تشغيل الخادم. تتطلب الملحن يعمل بشكل جيد.

3
Hemamalini

يمكنك تجربة شيء مثل هذا

php -d memory_limit=4G /usr/local/bin/composer update
1
GiorgosK

يمكنك تجربة الإعداد preferred-install إلى "dist" في تكوين <WP CLI's Composer - عادة في ~/.wp-cli/packages/composer.json.

0
XedinUnknown

php -d memory_limit = 5G composer.phar التحديث

0
Ali Özyıldırım