Приветствую. Как обновить модуль, если composer пишет killed?
composer update drupal/search_api --with-dependencies
Система пишет Killed. Прочитал, что composer нужно больше оперативной памяти. У меня 2 ГБ всего. Из них свободно 900м.
Composer version 2.0.12
Комментарии
Это на локалке? Попробуй добавить файла подкачки гигов 8
Но, ИМХО, с 2 гигами оперативки нормально веб-разработкой заниматься не получится
Нет, это продакшн
На продакшене не нужно запускать composer update. Обновляться нужно на локалке, а на проде запускать composer install
Чуть подробнее бы, можно со скриншотом.
Это первый композер был прожорлив, второй нет. У меня на хостинге тоже 2 ГБ и всё работает. Это не так уж мало.
У меня некоторые модули могут обновиться, некоторым не хватает ресурсов.
А сколько памяти выделено для PHP на сервере? Это можно посмотреть на /admin/reports/status
Ограничение памяти: 128M
Вот это точно очень мало, по умолчанию 256. Гугл или настоящие боевые сисадмины подскажут как увеличить, я навскидку не помню
В "отчете о состоянии" это память для веб-запросов. А для php-cli ограничения памяти отдельно задаются.
Там было бы не killed, а ошибка php в стиле "memory limit exceed".
Тут не хватает именно выделения на стороне ОС, и срабатывает OOM killer.
Правильно - надо делать update на dev, а на prod делать install, как правильно выше написано.
Второй вариант - свап или доп. память.
Второй композер конечно менее прожорлив, но не так уж и лёгок в update. Первый конечно мог и пару гигов целиком сожрать. Но и второй несколько сот мегов может.
Не нашел про install.
Сделал так:
composer require 'drupal/search_api:^1.28'
Вроде работает. Вообще, читая мануалы не очень ясно как именно правильно. Возможно я не внимательно читал, но на орге в мануалах именно
composer update
илиcomposer require
https://getcomposer.org/doc/03-cli.md#install-i
Если Composer возвращает ошибку «Killed» при попытке обновить модуль, это означает, что процесс был прерван до того, как он смог завершиться. Это может быть вызвано различными проблемами, такими как нехватка памяти или тайм-аут.
Чтобы устранить эту проблему, вы можете попробовать выполнить следующие действия:
Проверьте журналы ошибок вашего сервера, чтобы узнать, есть ли какие-либо подсказки относительно того, почему процесс был завершен.
Увеличьте лимит памяти для Composer, добавив следующую строку в файл «composer.json»:
<?php"config": {
"platform": {
"php": "7.4"
},
"memory-limit": -1
}
?>
Если проблема не устранена, вам может потребоваться увеличить лимит времени ожидания для Composer, добавив следующую строку в файл «composer.json»:
<?php"config": {
"platform": {
"php": "7.4"
},
"process-timeout": 3600
}?>
Если проблема не устранена, вам может потребоваться обновить модуль вручную, загрузив последнюю версию с веб-сайта проекта и извлекая ее в каталог «modules» вашего сайта.
Нет, вы ошибаетесь, это не будет работать при таком сообщении. В обоих случаях, и при memory_limit и при таймауте выполнения, была бы внятная ошибка со стороны php, точно указывающая на причину проблемы.
Ошибка "Killed", как тут, это либо вручную снят процесс, либо OOM killer при критичной нехватке памяти( ну а точнее SIGKILL или SIGTERM отправленные процессу извне, если быть точным). И именно в данном случае, это наверняка OOM Killer.