Не удалось завершить сборку на Lightsail

Привет, похоже, у меня возникла та же проблема, что и на Rebuild app has stuck и Background saving terminated with success, за исключением того, что я многократно повторял процесс сборки, как с перезагрузкой, так и без неё.

У меня есть экземпляр Lightsail с 2 vCPU и 1 ГБ ОЗУ под управлением Ubuntu 20.04. Вручную изменил db_shared_memory на 256 МБ и количество процессов Unicorn на 4, основываясь на других обсуждениях здесь. Пробовал запускать discourse-setup, discourse-doctor и launcher rebuild app — все они ведут себя одинаково.

В логах вижу:

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

Однако попытки применить настройки из MKJ's Opinionated Discourse Deployment Configuration не помогли.

Процесс сборки зависает на:

...[Babel: select-kit > applyPatches]
...[@embroider/compat/app]
...[@embroider/webpack]
...[@embroider/webpack]
107:M 22 Jan 2025 14:37:30.565 * 1 changes in 3600 seconds. Saving...
107:M 22 Jan 2025 14:37:31.648 * Background saving started by pid 854
854:C 22 Jan 2025 14:37:34.940 * DB saved on disk
854:C 22 Jan 2025 14:37:35.092 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB
107:M 22 Jan 2025 14:37:35.341 * Background saving terminated with success

Есть ли какие-либо предложения, что можно сделать для решения этой проблемы? Спасибо.

Сколько у вас swap-пространства? Возможно, стоит увеличить его до 3–4 ГБ.

Как долго система висит на этом приглашении?

1 ГБ — это немного; запущены ли ещё какие-либо процессы на этой виртуальной машине?

Это не проблема, но почему именно 20.04? Её срок поддержки истекает через 4 месяца.

Извините, 22.04. Ничего другого на нём не запущено. Я точно оставил его зависшим более чем на час. Сейчас пытаюсь увеличить swap, спасибо за совет.

Кстати, я оказался в ситуации, когда у моей виртуальной машины чуть меньше 1 ГБ оперативной памяти, и мне пришлось закомментировать проверку памяти. Не поэтому ли discourse-setup выдаёт это?

Найдено 0 ГБ памяти и 4 физических ядра процессора
установка db_shared_buffers = 0MB
установка UNICORN_WORKERS = 0
параметры памяти в containers/app.yml обновлены.

Возможно, преобразование памяти в ГБ и способ подсчёта ядер процессора по какой-то причине неверны.

1 ГБ сейчас действительно мало. Я бы настоятельно рекомендовал 2 ГБ.

Пока это очень небольшое сообщество, и финансирование поступает из академической среды, поэтому я стараюсь удерживать стоимость ниже 10 долларов в месяц. Если это окажется невозможным, я увеличу бюджет. Спасибо!

Многие стоят меньше 10 долларов США

Я не знаком с Lightsail, но у Hetzner есть 2 vCPU, 4 ГБ ОЗУ и 40 ГБ NVMe за 5 евро в месяц. У них также есть серверы в США.

Спасибо за предложения. Я несколько привязан к AWS, так как всё остальное для этого проекта размещено и управляется там, но обязательно рассмотрю возможность переезда в другое место, если до этого дойдёт.

Увеличение размера файла подкачки позволило мне продвинуться дальше, чем когда-либо, но моё SSH-соединение истекло до завершения сборки (после нескольких часов работы).

Последний идентифицируемый вывод среди тысячи строк Babel: discourse-plugins > applyPatches был: [WARN] (broccoli-terser-sourcemap) Minifying "assets/browser-detect.js" took: 43325ms (more than 20,000ms). Помогло бы ли увеличение файла подкачки в данном случае, или мне стоит рассмотреть возможность добавления оперативной памяти?

Вы можете попробовать использовать tmux или screen, чтобы иметь возможность переподключиться к сессии.

Мое предположение: у вас закончилась оперативная память, и добавление большего объема файла подкачки может помочь продвинуться дальше, но я снова рекомендую просто добавить больше оперативной памяти. Возможно, удастся изменить её размер: оставить размер диска без изменений, пересобрать систему с большим объемом ОЗУ, а затем уменьшить размер виртуальной машины до меньшего, когда она будет запущена.

Не знаю, возможно ли это или легко ли это сделать в Lightsail.

Какой у вас размер файла подкачки?

Привет, у меня было 2 ГБ подкачки. В итоге я получил более мощный ВМ в Lightsail, и сборка прошла без проблем. Я не думаю, что в этом сервисе возможно изменение размера вверх или вниз. Еще раз спасибо за помощь!

P.S: У меня всё ещё есть предупреждение о перераспределении памяти, но я ничего с этим не сделал. Мне всё равно стоит его включить?

Если бы вы увеличили до 4 ГБ, возможно, это сработало бы.

В последнее время я не обращал на это внимания. Я почти уверен, что мои инструменты включают эту опцию, и сообщение об ошибке не исчезает. Скорее всего, большинство людей либо не замечают это сообщение, либо полностью его игнорируют. В вашем случае результат может отличаться.

Я вижу его регулярно, но так как мои установки работают, я просто игнорирую его :smile:

Думаю, что так, но я видел:

и решил, что даже если бы это сработало, время сборки всё равно было бы неоправданно долгим, а 5 долларов стоили спокойствия. Надеюсь, наше сообщество вырастет настолько, что оправдает переход на более мощный сервер :slight_smile:

2 ГБ — это официальная позиция, но сборки требуют всё больше оперативной памяти, поэтому при наличии только 1 ГБ я часто создаю больший файл подкачки.

Вот именно это я и пытался вам объяснить, но в некоторых частях мира 5 долларов стоят гораздо больше, чем в других! :wink:

Я уловил намёки!

Мне всё ещё трудно осознать, что я буду искать каждую копейку, чтобы сэкономить при аренде сервера, в то время как с радостью заплачу 20 долларов за игру, в которую не буду играть в Steam, или куплю пиццу за 15 долларов, зная, что она даже не будет такой уж вкусной. :lolsob: