Не удалось пересобрать приложение

Лог здесь:

[2025-03-31T05:52:21.927771 #1]  INFO -- : > cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "Эта версия Discourse использует yarn, но preset-версия node_modules для pnpm обнаружена. Очистка..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi
bash: строка 1:   302 Убито                  CI=1 pnpm install --frozen-lockfile
I, [2025-03-31T05:52:29.299652 #1]  INFO -- : Область: все 17 рабочих проектов
Файл блокировки актуален, шаг разрешения пропущен
Прогресс: разрешено 1, переиспользовано 0, загружено 0, добавлено 0
Пакеты: +455 -114
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Прогресс: разрешено 455, переиспользовано 170, загружено 50, добавлено 119
Прогресс: разрешено 455, переиспользовано 170, загружено 187, добавлено 257
Прогресс: разрешено 455, переиспользовано 170, загружено 281, добавлено 349
Прогресс: разрешено 455, переиспользовано 170, загружено 285, добавлено 357, готово
.../core-js@3.33.0/node_modules/core-js postinstall$ node -e "try{require('./postinstall')}catch(e){}"
.../node_modules/@swc/core postinstall$ node postinstall.js
.../esbuild@0.24.2/node_modules/esbuild postinstall$ node install.js
.../core-js@3.33.0/node_modules/core-js postinstall: Готово
.../node_modules/@swc/core postinstall: Не удалось



ОШИБКА
--------------------
Pups::ExecError: cd /var/www/discourse && if [ -f yarn.lock ]; then
  if [ -d node_modules/.pnpm ]; then
    echo "Эта версия Discourse использует yarn, но preset-версия node_modules для pnpm обнаружена. Очистка..."
    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +
  fi
  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
else
  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'
fi завершилась с ошибкой: #<Process::Status: pid 299 exit 137>
Место сбоя: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
Выполнение не удалось с параметрами {"cd"=>"$home", "hook"=>"yarn", "cmd"=>["if [ -f yarn.lock ]; then\n  if [ -d node_modules/.pnpm ]; then\n    echo \"Эта версия Discourse использует yarn, но preset-версия node_modules для pnpm обнаружена. Очистка...\"\n    find ./node_modules ./app/assets/javascripts/*/node_modules -mindepth 1 -maxdepth 1 -exec rm -rf {} +\n  fi\n  su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'\nelse\n  su discourse -c 'CI=1 pnpm install --frozen-lockfile && pnpm prune'\nfi"]}
Загрузка не удалась с кодом выхода 137
** ЗАГРУЗКА НЕ УДАЛАСЬ ** Пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках; их может быть несколько.

Если память мне не изменяет, Exit 137 означает нехватку памяти.

Добавьте больше оперативной памяти и/или увеличьте размер файла подкачки. Вероятно, вам потребуется как минимум 5 ГБ суммарно оперативной памяти и файла подкачки.

               total        used        free      shared  buff/cache   available
Mem:            31Gi       4.1Gi        17Gi       3.5Mi       9.9Gi        27Gi
Swap:          8.0Gi          0B       8.0Gi

но памяти на моём сервере достаточно.. @pfaffman

Это очень странно. Код 137 означает, что задача получила сигнал SIGKILL, что обычно указывает на нехватку памяти.

Однако с таким объемом памяти это не имеет смысла.

Это странно.

Возможно, стоит проверить вывод команды
sysctl vm.overcommit_memory

А также:

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.2 LTS"

$ uptime
 02:12:36 up 21 days,  5:25,  2 users,  load average: 0.02, 0.18, 0.26

$ df -h /
Filesystem                             Size  Used Avail Use% Mounted on
/dev/mapper/vg0--root-root--partition  492G   29G  463G   6% /

$ free
               total        used        free      shared  buff/cache   available
Mem:        32819356     4093776    19016296        3576    10185012    28725580
Swap:        8388604           0     8388604

$ swapon
NAME      TYPE SIZE USED PRIO
/swap.img file   8G   0B   -2

$ vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st gu
 2  0      0 18944824   3620 10211784    0    0     2    81 1057    1  1  0 99  0  0  0
 0  0      0 18965764   3620 10195160    0    0     0   123 8661 10955  3  6 91  0  0  0
 2  0      0 18953904   3620 10203228    0    0     0     9 3388 3559  1  1 98  0  0  0
 1  0      0 18864336   3620 10292272    0    0     3  3408 8327 10272  6  4 90  0  0  0
 9  3      0 17795380   3620 10561284    0    0  1666 33519 29310 41403 27 27 44  1  0  0

dmesg|egrep -i "memory|oom|kill"
none

$ ps auxrc
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
td20      347732  200  0.0  21408  5588 pts/1    R+   02:16   0:00 ps

$ sysctl vm.overcommit_memory
vm.overcommit_memory = 0


@Ed_S

Я заметил, что когда использование памяти превышает 1 ГБ+, процесс быстро завершается.

Спасибо… Для меня это всё ещё немного загадка. Но я настоятельно рекомендую включить overcommit. Вы можете установить это прямо сейчас с помощью

sudo sysctl vm.overcommit_memory=1

однако чтобы применить настройку и после перезагрузки, потребуется немного больше усилий. Это может решить проблему, и в таком случае сохранение настройки — правильный шаг. Похоже, я сделал это, создав однострочный файл:

# cat /etc/sysctl.d/90-vm_overcommit_memory.conf 
vm.overcommit_memory=1

Если это не поможет, возможно, какой-то watchdog или квота отслеживает чрезмерное использование ресурсов и завершает процессы. Возможно, стоит внимательно изучить полный вывод dmesg — если сбой произошёл недавно, последние 100 строк могут дать подсказку.