Nhà soạn nhạc bị giết trong khi cập nhật


116

Tôi gặp sự cố, tôi đã cố gắng cài đặt một gói mới cho dự án Laravel 4 của mình. Nhưng khi tôi chạy php composer.phar updatetôi nhận được điều này:

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

Tôi đã tìm kiếm sự cố trên Internet và thấy rằng bộ nhớ có vấn đề, tôi nghĩ rằng tôi không có đủ RAM, tôi đã kiểm tra điều này, tôi có khoảng 411mb trống. Nhà soạn nhạc có thực sự cần thêm RAM?

Câu trả lời:


291

Thông báo "Đã giết" thường có nghĩa là quá trình của bạn đã tiêu tốn quá nhiều bộ nhớ, vì vậy, bạn có thể chỉ cần thêm nhiều bộ nhớ hơn vào hệ thống của mình nếu có thể. Tại thời điểm viết câu trả lời này, tôi đã phải tăng bộ nhớ máy ảo của mình lên ít nhất 768MB để có composer updatethể hoạt động trong một số tình huống.

Tuy nhiên, nếu bạn đang thực hiện việc này trên một máy chủ trực tiếp, bạn hoàn toàn không nên sử dụng composer update. Thay vào đó, điều bạn nên làm là:

  1. Chạy composer updatetrong môi trường cục bộ (chẳng hạn như trực tiếp trên máy tính xách tay / máy tính để bàn thực của bạn hoặc bộ chứa docker / máy ảo chạy trên máy tính xách tay / máy tính để bàn của bạn) nơi giới hạn bộ nhớ không quá nghiêm trọng.
  2. Tải lên hoặc git pushtệp composer.lock.
  3. Chạy composer installtrên máy chủ trực tiếp.

composer installsau đó sẽ đọc từ tệp .lock, luôn tìm nạp các phiên bản giống nhau thay vì tìm các phiên bản mới nhất của mọi gói. Điều này làm cho ứng dụng của bạn ít có khả năng bị hỏng hơn và nhà soạn nhạc sử dụng ít bộ nhớ hơn.

Đọc thêm tại đây: https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

Ngoài ra, bạn có thể tải toàn bộ vendorthư mục lên máy chủ, không cần phải chạy composer installgì cả, nhưng sau đó bạn nên chạy composer dump-autoload --optimize.


5
Khi tôi tải lên composer.lock và chạy cài đặt composer đã hoạt động. Cảm ơn!
Ehsan

Điều này không hiệu quả với tôi, trình soạn nhạc được cài đặt bởi apt, vì vậy tôi gỡ bỏ nó và cài đặt theo cách thủ công, sau đó tất cả đều hoạt động tốt.
rafaelphp

2
Tôi đang gặp sự cố này trên một máy cục bộ.
afilina 13/02/19

Để phát triển cục bộ chắc chắn hãy sử dụng @ Balmipor's Answer hoặc bất kỳ máy chủ nào khác có dung lượng ram nhỏ.
Shawn Pivonka

71

Nếu giống như tôi, bạn đang sử dụng một số máy ảo nhỏ thiếu bộ nhớ, việc tạo tệp hoán đổi sẽ thực hiện thủ thuật:

#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

Như một số nhận xét đã chỉ ra, đừng quên thêm sudo nếu bạn không làm việc với quyền root.

btw, hãy chọn vị trí / tên tệp / kích thước khác cho tệp.
/varcó lẽ không phải là nơi tốt nhất, nhưng tôi không biết nơi nào sẽ là, và hiếm khi quan tâm vì các máy chủ nhỏ hầu hết được sử dụng cho mục đích thử nghiệm.


4
Đừng quên sudo- Tôi đã phải sử dụng đặc quyền root để chạy các lệnh này.
MacDada

trở lại swapon: swapfile: swapon failed: Operation not permitted, Tại sao?
Muhammad Dyas Yaskur

@Muhammad Dyas Yaskur Nếu bạn không có vấn đề về quyền (hãy đảm bảo hoạt động dưới dạng root hoặc sử dụng sudo), bạn có bất kỳ điều gì khác cụ thể trong cấu hình của mình (hệ điều hành, loại ổ đĩa, v.v.) không?
Balmipour

@Balmipour Tôi đã sử dụng làm root nhưng vẫn không được cấp phép, hệ điều hành của tôi là centos 7.0. [root@server _swap_]# dd if=/dev/zero of=swapfile bs=1M count=1000 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 2.79954 s, 375 MB/s [root@server _swap_]# ls -l total 1024004 -rw------- 1 root root 1048576000 Feb 6 02:12 swapfile [root@server _swap_]# mkswap swapfile Setting up swapspace version 1, size = 1023996 KiB no label, UUID=b3f1110e-5f43-4d1f-bbb1-71cad96680f9 [root@server _swap_]# swapon swapfile swapon: swapfile: swapon failed: Operation not permitted
Muhammad Dyas Yaskur

1
Tốt nhất là chạy lệnh thosw trong mô hình gốc. `` sudo su ''
dheeraj

19

Đáng tiếc, nhà soạn nhạc đòi hỏi rất nhiều RAM và sức mạnh xử lý. Dưới đây là một số điều tôi đã làm, kết hợp lại, giúp quá trình này có thể tồn tại được. Đây là trên máy tính chơi đám mây của tôi env.

  1. Có thể bạn đang hết RAM. Bật hoán đổi: https://www.digitalocean.com/community/search?q=add+swap (lưu ý: Tôi nghĩ phương pháp hay nhất là thêm phân vùng riêng biệt. Hướng dẫn của Digitalocean phù hợp với môi trường của họ)
  2. service mysql stop (giết các dịch vụ DB / mem-hog của bạn để giải phóng một số RAM - đừng quên khởi động lại!)
  3. sử dụng phiên thiết bị đầu cuối phụ đang chạy topđể xem mức tiêu thụ bộ nhớ / hoán đổi cho đến khi quá trình hoàn tất.
  4. composer.phar update --prefer-dist -vvv(đầu ra chi tiết [vẫn bị treo ở một số điểm khi làm việc] và sử dụng các tệp nén distro). Có thể thử một --dry-runquá?
  5. Composer dường như biết chạy chậm hơn trong các phiên bản PHP cũ hơn (ví dụ: 5.3x). Nó vẫn còn chậm trong 5.5,9 đối với tôi ...

Tôi thay thế topbằng htop, thuận tiện hơn.
DevonDahon

Cũng xem xét việc tạo tệp hoán đổi
Hari Harker

8

Bản sửa lỗi DigitalOcean không yêu cầu thêm bộ nhớ - kích hoạt hoán đổi, đây là ví dụ cho 1gb:

trong thiết bị đầu cuối chạy bên dưới

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

Giải pháp trên sẽ hoạt động cho đến lần khởi động lại tiếp theo, sau đó hoán đổi sẽ phải được kích hoạt lại. Để duy trì nó giữa các lần khởi động lại, hãy thêm tệp hoán đổi vào fstab:

sudo nano /etc/fstab

mở tệp bên trên thêm dòng bên dưới vào tệp

/var/swap.1 swap swap sw 0 0

bây giờ khởi động lại máy chủ. Nhà soạn nhạc yêu cầu hoạt động tốt.


6

Chạy composer self-updatecomposer clearcache xóa nhà cung cấp và nhà soạn nhạc. Khóa khởi động lại môi trường cục bộ của bạn và sau đó chạy php -d memory_limit=-1 /usr/local/bin/composer install


2

Tăng giới hạn bộ nhớ cho nhà soạn nhạc

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

Có thể cần khởi động lại sau thay đổi này


1

Tôi đã gặp lỗi này khi chạy composer installbên trong vùng chứa PHP DOCKER của mình, Đó là sự cố bộ nhớ. Giải quyết bằng cách tăng bộ nhớ SWAP trong ƯU ĐÃI DOCKER từ 512MB lên 1,5GB


Và làm thế nào để bạn làm điều đó ?
max4ever

nhấp chuột phải vào Docker Desktop Icon -> Preferences -> Rousources
Inoubli

0

Tôi gặp sự cố này do một gói không cập nhật chính xác với các ký tự đại diện, tôi sử dụng trực tiếp phiên bản mới nhất và cuối cùng nó cũng hoạt động.

"l3 / cas-bó": "~ 1,0" -------> "l3 / cas-bó": "1.1.13"



0

Đây là cách tôi thành công trong việc cài đặt gói maatwebsite \ excel từ composer trong Laravel Framework:

  1. Tôi tải xuống tệp composer.json và tệp composer.lock từ máy chủ từ xa của mình.
  2. Tôi chạy composer updatetừ dấu nhắc lệnh cục bộ (sau đó đợi cho đến khi tất cả quá trình cài đặt kết thúc).
  3. Tải tệp composer.lock lên máy chủ từ xa.
  4. chạy composer installtrên máy chủ từ xa (sau đó đợi cho đến khi tất cả quá trình kết thúc).
  5. LÀM XONG

-1

php -d memory_limit = Cập nhật 5G composer.phar


Vui lòng thêm một số giải thích cho mã của bạn như vậy mà những người khác có thể học hỏi từ nó
Nico Haase

-1

Đã giải quyết trên Laravel / Homestead (Vagrant Windows)

  1. Chỉnh sửa Homestead.yamlvà tăng bộ nhớ từ 2048 lên 4096

  2. lang thang

  3. người lang thang

  4. Cài đặt Symfony bằng dòng này trên thư mục bạn chọn (phải không có tệp)

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

-2

Bạn có thể thử đặt preferred-installthành "dist"trong cấu hình Trình soạn thảo.


Câu hỏi này là về cài đặt một số dự án Laravel. Câu trả lời của bạn liên quan đến nó như thế nào?
Nico Haase

Câu hỏi này là về cài đặt một gói. Cụ thể, đó là vấn đề với việc cài đặt một gói có liên quan đến RAM. Tại sao tôi lại đưa thông tin về WP vào câu trả lời cách đây 2 năm? Tôi không biết. Bây giờ tôi đã cập nhật câu trả lời, IMO hiện rất phù hợp.
XedinUnknown

-3

Tôi gặp lỗi này trong môi trường Docker cục bộ. Tôi đã giải quyết nó bằng cách khởi động lại Docker.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.