Я сознательно ничего не менял, но сегодня, после выполнения git pull и попытки запуска bootstrap для web_only.yml, процесс начал выдавать ошибки примерно через 90 секунд после старта. Привожу только последние строки ошибки, возможно, это поможет в диагностике:
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:348:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:511:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(Полный трассировочный вывод можно получить, запустив задачу с флагом --trace)
I, [2022-12-29T10:28:07.806753 #1] INFO -- : gem install geocoder -v 1.4.4 -i /var/www/discourse/plugins/discourse-locations/gems/3.1.3 --no-document --ignore-dependencies --no-user-install
Успешно установлен geocoder-1.4.4
Установлено 1 gem
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' завершилась с ошибкой, код возврата #<Process::Status: pid 1066 exit 1>
Место возникновения ошибки: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec завершился с ошибкой с параметрами {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap завершился с кодом возврата 1
** ОШИБКА ПРИ ЗАПУСКЕ BOOTSTRAP ** пожалуйста, прокрутите вверх и найдите более ранние сообщения об ошибках; их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.
9b7ac0c88b42b2aa1eccb9ef291527f4afd8b71861669af66ab79dee5ed82a45
Не понимаю, почему теперь не удаётся выполнить bootstrap для того же самого файла yml, который ранее успешно запускался. Мой сайт, тем не менее, работает нормально.
Я также не нашёл никаких «ошибок» в утилите Discourse-Doctor (я могу искать только слово «error», которого не было в результирующем файле от discourse doctor). Впрочем, я не эксперт.
Вы отлично справились. Теперь я могу полностью загрузить веб-контейнер. Огромное спасибо, уже не в первый раз.
Но теперь все мои предыдущие «маппинги/локации» различных постов и пользователей исчезли.
Есть ли какое-то альтернативное решение? Я знаю, что могу, должен и хотел бы поискать больше информации по темам этого плагина. Но если коротко: есть ли решение этой проблемы?
Вчера, после отключения плагина ‘location’, мне удалось успешно пересобрать контейнер web_only. Но сегодня, даже после поочередного отключения всех плагинов, процесс инициализации всё ещё завершается с ошибкой.
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 900 exit 137>
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 137
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2c5f01d5ca6b216e744e11547b121e64aac0ad5e37d64d2ec5e2f279fe766c6a
Да, контейнер уже запущен, и сайт работает. Однако при попытке пересобрать/инициализировать тот же контейнер (web_only) возникает ошибка. Хотя вчера, столкнувшись с той же проблемой, отключение плагина ‘location’ позволило успешно выполнить инициализацию, но сегодня, даже без внесения каких-либо изменений, это снова не сработало.
Может ли это быть проблемой?
Нужен ли теперь Discourse объём памяти более 4 ГБ (даже со всеми отключёнными плагинами)?
Два других сайта на WordPress, работающие на том же дроплете/экземпляре, практически бездействуют.
Может ли существовать простое решение этой проблемы, помимо перехода на машину с 8 ГБ оперативной памяти?
Да, у вас свободно всего 400 МБ оперативной памяти, чего недостаточно для перестроения Discourse. Попробуйте увеличить объём до 4–5 ГБ или остановить форум перед перестроением и повторите попытку.
Предполагается, что 400 МБ свободного места указаны в состоянии простоя. Перестроение создаёт значительную нагрузку на систему (я мог бы проверить это в Proxmox для своего сайта, но он сейчас некоторое время был недоступен) и требует больше памяти, чем в режиме простоя.
Извините, но я не совсем понял смысл. Вы имеете в виду, что мне нужно ещё увеличить объём на 4–5 ГБ? То есть, например, с 4 ГБ до 8 или 9 ГБ?
Как мне остановить мой форум (то есть веб-сайт)?
И
Вы имеете в виду, что даже после увеличения памяти мне всё равно нужно будет остановить сайт перед перестройкой?
Попробуйте выполнить эту команду в терминале перед добавлением памяти.
Это предполагает стандартную установку. Убедитесь, что вы находитесь в директории /var/discourse.
Я перезагрузил свой сервер Ubuntu, что позволило освободить около 700–800 МБ оперативной памяти на моём инстансе, и процесс инициализации завершился успешно. Мне пришлось бы остановить контейнер перед следующей попыткой сборки (BS), если бы после включения нужных плагинов повторная сборка или инициализация не увенчались успехом.
Однако меня удивляют новые требования к оперативной памяти у Discourse. Стоимость инстанса/дроплета почти удваивается при увеличении памяти с 4 до 8 ГБ, чего я не хочу, учитывая, что мой сайт очень-очень-очень маленький (возможно, 10 посетителей в день). Ранее стандартная установка Discourse требовала всего 1–2 ГБ оперативной памяти.
Огромное спасибо за помощь в понимании того, что шло не так.
Если возможно, я рекомендую выбрать модель с 8 ГБ памяти, если она доступна. Модель с 2 ГБ предназначена для небольших форумов, а у вас, судя по всему, очень много контента.
У меня 4 ГБ, и пока посетителей очень мало. В будущем, возможно, перейду на 8 ГБ (варианта с 6 ГБ нет).
Кстати, в некоторых статьях в Google утверждается, что объем свободной памяти не так уж важен, поскольку это, по сути, «потерянная» память, которая ничего не делает. Пользователям стоит обращать внимание на «доступную память» — ту, что освободится при необходимости. В моём случае доступная память составляет 1,4 ГБ.
Как показано на приведённом скриншоте/в статье, параметр «available» включает в себя, например, буферную память, которая может стать «доступной для системы» в случае необходимости. Однако я не эксперт в этих вопросах.
Кроме того, я всё ещё изучаю эту тему (опять же, я не эксперт). Хотя я предполагаю, что мои два других сайта на WordPress, которые я считаю практически неактивными, могут быть связаны с этим. Попробую отключить их в свободное время и затем сравнить производительность.
На данный момент моя проблема с восстановлением решена без необходимости перехода на более мощные ресурсы и оплаты почти вдвое больше каждый месяц. Спасибо вам.
Вы можете добавить пространство подкачки (swap). Для пересборки требуется много оперативной памяти. Кроме того, поскольку на сервере запущены процессы, помимо Discourse, требуется больше памяти, чем минимально необходимое. Даже если другие сайты не получают трафика, работа других веб-серверов потребляет часть памяти.