ผู้แต่งเสียชีวิตขณะอัปเดต


119

ฉันพบปัญหาฉันพยายามติดตั้งแพ็คเกจใหม่ในโปรเจ็กต์ Laravel 4 ของฉัน แต่เมื่อฉันเรียกใช้php composer.phar updateฉันจะได้รับสิ่งนี้:

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

ฉันได้ค้นหาปัญหาในอินเทอร์เน็ตและเห็นว่าหน่วยความจำเป็นปัญหาฉันคิดว่าฉันมี RAM ไม่เพียงพอฉันตรวจสอบแล้วว่าฉันมีพื้นที่ว่างประมาณ 411mb นักแต่งเพลงต้องการ RAM มากขึ้นจริงหรือ?

คำตอบ:


303

ข้อความ "Killed" มักหมายความว่ากระบวนการของคุณใช้หน่วยความจำมากเกินไปดังนั้นคุณอาจต้องเพิ่มหน่วยความจำเพิ่มเติมในระบบของคุณหากเป็นไปได้ ในขณะที่เขียนคำตอบนี้ฉันต้องเพิ่มหน่วยความจำของเครื่องเสมือนเป็นอย่างน้อย 768MB เพื่อcomposer updateให้ทำงานได้ในบางสถานการณ์

อย่างไรก็ตามหากคุณทำสิ่งนี้บนเซิร์ฟเวอร์ที่ใช้งานจริงคุณไม่ควรใช้composer updateเลย สิ่งที่คุณควรทำคือ:

  1. ทำงานcomposer updateในสภาพแวดล้อมเฉพาะที่ (เช่นโดยตรงบนแล็ปท็อป / เดสก์ท็อปจริงของคุณหรือ Docker container / VM ที่ทำงานบนแล็ปท็อป / เดสก์ท็อปของคุณ) ซึ่งข้อ จำกัด ของหน่วยความจำไม่ควรรุนแรงเท่า
  2. อัปโหลดหรือgit pushไฟล์ composer.lock
  3. รันcomposer installบนเซิร์ฟเวอร์สด

composer installจะอ่านจากไฟล์. lock โดยดึงข้อมูลเวอร์ชันเดียวกันทุกครั้งแทนที่จะค้นหาเวอร์ชันล่าสุดของทุกแพ็คเกจ ซึ่งทำให้แอปของคุณมีโอกาสที่จะพังน้อยลงและผู้แต่งใช้หน่วยความจำน้อยลง

อ่านเพิ่มเติมที่นี่: https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

หรือคุณสามารถอัปโหลดทั้งvendorไดเรกทอรีไปยังเซิร์ฟเวอร์, อ้อมจำเป็นที่จะต้องทำงานcomposer installตลอด แต่แล้วคุณควรcomposer dump-autoload --optimizeทำงาน


5
เมื่อฉันอัปโหลด composer.lock และเรียกใช้การติดตั้ง composer ทำงาน ขอบคุณ!
Ehsan

สิ่งนี้ไม่ได้ผลสำหรับฉันนักแต่งเพลงเป็นตัวติดตั้งโดย apt ดังนั้นฉันจึงลบออกและติดตั้งด้วยตนเองจากนั้นก็ทำงานได้ดี
rafaelphp

2
ฉันมีปัญหานี้ในเครื่องท้องถิ่น
afilina

สำหรับการพัฒนาท้องถิ่นอย่างแน่นอนให้ไปที่คำตอบของ @ Balmipor หรือเซิร์ฟเวอร์อื่น ๆ ที่มีหน่วยความจำเพียงเล็กน้อย
Shawn Pivonka

74

ถ้าเช่นฉันคุณกำลังใช้ micro VM บางตัวที่ไม่มีหน่วยความจำการสร้างไฟล์ swap จะทำเคล็ดลับ:

#Check free memory before
free -m

mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory.  Feel free to add MORE
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
#Automatically mount this swap partition at startup
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab

#Check free memory after
free -m

ตามที่หลาย ๆ ความคิดเห็นระบุไว้อย่าลืมเพิ่ม sudoหากคุณไม่ได้ทำงานเป็นรูท

btw อย่าลังเลที่จะเลือกตำแหน่ง / ชื่อไฟล์ / ขนาดอื่นสำหรับไฟล์
/varอาจไม่ใช่สถานที่ที่ดีที่สุด แต่ฉันไม่รู้ว่าจะเป็นสถานที่ใดและไม่ค่อยสนใจเนื่องจากเซิร์ฟเวอร์ขนาดเล็กส่วนใหญ่ใช้เพื่อการทดสอบ


4
อย่าลืมsudo- ฉันต้องใช้สิทธิ์ root เพื่อเรียกใช้คำสั่งเหล่านี้
MacDada

กลับswapon: swapfile: swapon failed: Operation not permittedทำไม?
Muhammad Dyas Yaskur

@Muhammad Dyas Yaskur หากคุณไม่มีปัญหาการอนุญาต (ต้องแน่ใจว่าทำงานเป็นรูทหรือใช้ sudo) คุณมีสิ่งอื่นใดเป็นพิเศษในการกำหนดค่าของคุณหรือไม่ (ระบบปฏิบัติการประเภทของไดรฟ์ ฯลฯ )
Balmipour

1
ควรรันคำสั่ง thosw ในรูทโมเดล `` sudo su```
dheeraj

1
@ Balmipour ฉันใช้กล่อง Laravel Homestead * Homestead v10.12.0, v11.0.2 * Settler v9.5.1 (Ubuntu 18.04) * Settler v10.0.0 (Ubuntu 20.04) ฉันจะขอบคุณที่ฉันทำ "sudo su" แล้วมันจะมี ทำงานโดยไม่มี sudo
Shawn Pivonka

19

นักแต่งเพลงที่ไม่น่าเชื่อต้องใช้ RAM และพลังประมวลผลจำนวนมาก ต่อไปนี้เป็นบางสิ่งที่ฉันทำซึ่งรวมกันแล้วทำให้กระบวนการนี้รับได้ นี่คือ env playpen บนคลาวด์ของฉัน

  1. แรมคุณอาจจะหมด เปิดใช้งานการแลกเปลี่ยน: https://www.digitalocean.com/community/search?q=add+swap (หมายเหตุ: ฉันคิดว่าแนวทางปฏิบัติที่ดีที่สุดคือการเพิ่มพาร์ติชันแยกต่างหากคำแนะนำของ Digitalocean เหมาะสมกับสภาพแวดล้อม)
  2. service mysql stop (ฆ่าบริการ DB / mem-hog ของคุณเพื่อเพิ่ม RAM - อย่าลืมเริ่มใหม่อีกครั้ง!)
  3. ใช้เซสชันเทอร์มินัลรองที่ทำงานtopเพื่อดูการใช้หน่วยความจำ / การสลับจนกว่ากระบวนการจะเสร็จสมบูรณ์
  4. composer.phar update --prefer-dist -vvv(เอาต์พุต verbose [ยังคงค้างในบางจุดเมื่อทำงาน] และใช้ไฟล์ distro zip) อาจจะลอง--dry-runเกินไป?
  5. เห็นได้ชัดว่านักแต่งเพลงทำงานช้าลงใน PHP เวอร์ชันเก่า (เช่น 5.3x) มันยังช้าใน 5.5.9 สำหรับฉัน ...

ฉันแทนที่topด้วยhtopสะดวกกว่า
DevonDahon

ดูการสร้างไฟล์ swap ด้วย
Hari Harker

9

การแก้ไข DigitalOcean ที่ไม่ต้องการหน่วยความจำเพิ่มเติม - การเปิดใช้งาน swap นี่คือตัวอย่างสำหรับ 1gb:

ในเทอร์มินัลรันด้านล่าง

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

วิธีแก้ปัญหาข้างต้นจะใช้งานได้จนกว่าจะรีบูตครั้งถัดไปหลังจากนั้นจะต้องเปิดใช้ swap หากต้องการคงอยู่ระหว่างการรีบูตให้เพิ่มไฟล์ swap ไปที่ fstab:

sudo nano /etc/fstab

เปิดไฟล์ด้านบนเพิ่มเพิ่มบรรทัดด้านล่างลงในไฟล์

/var/swap.1 swap swap sw 0 0

ตอนนี้รีสตาร์ทเซิร์ฟเวอร์ นักแต่งเพลงต้องการผลงานที่ดี


6

รันcomposer self-updateและcomposer clearcache ลบผู้ขายและ composer.lock รีสตาร์ทสภาพแวดล้อมโลคัลของคุณจากนั้นรัน php -d memory_limit=-1 /usr/local/bin/composer install


2

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันวิ่งcomposer installภายในคอนเทนเนอร์ PHP DOCKER ของฉันมันเป็นปัญหาเกี่ยวกับหน่วยความจำ แก้ไขได้โดยการเพิ่มหน่วยความจำ SWAP ใน DOCKER PREFERENCES จาก 512MB เป็น 1.5GB


และคุณจะทำอย่างไร
max4ever

คลิกขวาที่ Docker Desktop Icon -> Preferences -> Rousources
Inoubli

2

เพิ่มขีด จำกัด หน่วยความจำสำหรับนักแต่งเพลง

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

อาจต้องรีบูตหลังจากการเปลี่ยนแปลงนี้


0

ฉันได้รับปัญหานี้ที่เกิดจากแพ็คเกจที่อัปเดตด้วยสัญลักษณ์แทนไม่ถูกต้องฉันใช้เวอร์ชันล่าสุดโดยตรงและในที่สุดก็ใช้งานได้

"l3 / cas-bundle": "~ 1.0" -------> "l3 / cas-bundle": "1.1.13"


0

นี่คือวิธีที่ฉันประสบความสำเร็จในการติดตั้งแพ็คเกจ maatwebsite \ excel จากนักแต่งเพลงใน Laravel Framework:

  1. ฉันดาวน์โหลดไฟล์composer.jsonและไฟล์composer.lockจากเซิร์ฟเวอร์ระยะไกลของฉัน
  2. ฉันเรียกใช้composer updateจากพรอมต์คำสั่งภายในเครื่อง (จากนั้นรอจนกว่ากระบวนการติดตั้งทั้งหมดจะเสร็จสิ้น)
  3. อัปโหลดไฟล์composer.lockไปยังเซิร์ฟเวอร์ระยะไกล
  4. รันcomposer installบนเซิร์ฟเวอร์ระยะไกล (จากนั้นรอจนกว่ากระบวนการทั้งหมดจะเสร็จสิ้น)
  5. เสร็จสิ้น



-1

แก้ไขบน Laravel / Homestead (Vagrant Windows)

  1. แก้ไขHomestead.yamlและเพิ่มหน่วยความจำจาก 2048 เป็น 4096

  2. เร่ร่อนขึ้น

  3. ssh คนจรจัด

  4. ติดตั้ง Symfony ด้วยบรรทัดนี้ในโฟลเดอร์ที่คุณเลือก (ต้องไม่มีไฟล์)

    COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev

-2

คุณสามารถลองตั้งค่าpreferred-installเป็น"dist"ใน Composer config


คำถามนี้เกี่ยวกับการติดตั้งโปรเจ็กต์ Laravel คำตอบของคุณเกี่ยวข้องกับเรื่องนี้อย่างไร?
Nico Haase

คำถามนี้เกี่ยวกับการติดตั้งแพ็คเกจ โดยเฉพาะอย่างยิ่งปัญหาในการติดตั้งแพ็คเกจที่เกี่ยวข้องกับ RAM เหตุใดฉันจึงรวมข้อมูลเกี่ยวกับ WP ไว้ในคำตอบเมื่อ 2 ปีก่อน ฉันไม่รู้ ตอนนี้ฉันได้อัปเดตคำตอบแล้วซึ่งตอนนี้ IMO มีความเกี่ยวข้องมาก
XedinUnknown

-3

ฉันได้รับข้อผิดพลาดนี้ในสภาพแวดล้อม Docker ในเครื่อง ฉันแก้ไขได้โดยเพียงแค่รีสตาร์ท Docker

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.