Я попытался обновить Discourse, но получил следующее сообщение:
К сожалению, при обновлении Discourse произошла ошибка. Пожалуйста, проверьте логи ниже.
********************************************************
*** Пожалуйста, будьте терпеливы, следующие шаги могут занять некоторое время ***
********************************************************
Перезапуск Unicorn для освобождения памяти
Перезапуск процесса unicorn: pid 663
Ожидание перезагрузки Unicorn.
Ожидание перезагрузки Unicorn..
Ожидание перезагрузки Unicorn...
Ожидание перезагрузки Unicorn....
Используется oj 3.10.15
Используется optimist 3.0.1
Используется pg 1.2.3
Используется r2 0.2.7
Используется raindrops 0.19.1
Используется rchardet 1.8.0
Используется rinku 2.0.6
Используется rotp 6.2.0
Используется rqrcode_core 0.1.2
Используется rtlit 0.0.5
Используется rubyzip 2.3.0
Используется tilt 2.0.10
Используется sshkey 2.0.0
Используется stackprof 0.2.16
Используется unf_ext 0.0.7.7
Используется xorcist 1.1.2
Используется i18n 1.8.5
Используется tzinfo 1.2.7
Используется nokogiri 1.10.10
Используется rack-test 1.1.0
Используется mail 2.7.1
Используется addressable 2.7.0
Используется aws-sigv4 1.2.0
Используется barber 0.12.2
Используется cose 1.2.0
Используется ember-data-source 3.0.2
Используется sprockets 3.7.2
Используется discourse_image_optim 0.26.2
Используется faraday 1.1.0
Используется request_store 1.5.0
Используется message_bus 3.3.4
Используется pry 0.13.1
Используется rack-mini-profiler 2.2.0
Используется rack-protection 2.1.0
Используется uglifier 4.2.0
Используется logstash-logger 0.26.1
Используется mini_racer 0.3.1
Используется sidekiq 6.1.2
Используется mini_suffix 0.3.0
Используется nokogumbo 2.0.2
Используется omniauth 1.9.1
Используется puma 5.0.4
Используется rbtrace 0.4.14
Используется redis-namespace 1.8.0
Используется rqrcode 1.1.2
Используется ruby-readability 0.7.0
Используется sassc 2.0.1
Используется unf 0.1.4
Используется unicorn 5.7.0
Используется webpush 1.0.0
Используется activesupport 6.0.3.3
Используется loofah 2.7.0
Получение bootsnap 1.5.0
Используется ember-handlebars-template 0.8.0
Используется mini_scheduler 0.12.3
Используется oauth2 1.4.4
Используется omniauth-oauth 1.1.0
Используется sanitize 5.2.1
Используется pry-byebug 3.9.0
Используется pry-rails 0.3.9
Используется rails-dom-testing 2.0.3
Используется rails-html-sanitizer 1.3.0
Используется globalid 0.4.2
Используется activemodel 6.0.3.3
Используется aws-sdk-core 3.99.1
Используется css_parser 1.7.1
Используется actionview 6.0.3.3
Используется activejob 6.0.3.3
Используется active_model_serializers 0.8.4
Используется activerecord 6.0.3.3
Используется aws-sdk-kms 1.31.0
Используется aws-sdk-sns 1.25.1
Используется omniauth-oauth2 1.7.0
Используется omniauth-twitter 1.4.0
Используется onebox 2.1.4
Используется actionpack 6.0.3.3
Используется actionview_precompiler 0.2.3
Используется aws-sdk-s3 1.66.0
Используется omniauth-facebook 8.0.0
Используется omniauth-github 1.4.0
Используется omniauth-google-oauth2 0.8.0
Используется seed-fu 2.3.9
Используется actionmailer 6.0.3.3
Используется railties 6.0.3.3
Используется sprockets-rails 3.2.2
Используется jquery-rails 4.4.0
Используется lograge 0.11.2
Используется rails_failover 0.5.7
Используется rails_multisite 2.5.0
Используется sassc-rails 2.1.2
Используется discourse-ember-rails 0.18.6
Установка bootsnap 1.5.0 с нативными расширениями
Завершено! 123 зависимости из Gemfile, теперь установлено 161 gem.
Gems в группах test и development не были установлены.
Установленные gems находятся в `./vendor/bundle`
$ bundle exec rake plugin:pull_compatible_all
docker_manager уже находится в последней совместимой версии
discourse-data-explorer уже находится в последней совместимой версии
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Мигратор для мультисайта запущен с использованием 1 потока
Миграция default
== 20201027110546 CreateLinkedTopics: миграция ===============================
-- create_table(:linked_topics)
-> 0.0524s
-- add_index(:linked_topics, [:topic_id, :original_topic_id], {:unique=>true})
-> 0.0066s
-- add_index(:linked_topics, [:topic_id, :sequence], {:unique=>true})
-> 0.0045s
== 20201027110546 CreateLinkedTopics: мигрировано (0.0676s) ======================
Заполнение default
[...]
Сжатие завершено для locales/ko-0c530732e52b234cd31ea1959ec4b5127cfcc2cb5b076d4999abfa0530e5bba5.js : 0.11 сек
8625116.65540771 Сжатие: application-1e74fe54a11795d2a94b9b90ac1f18294214d956e95b882737a05319d5d11ff9.js
uglifyjs '/var/www/discourse/public/assets/_application-1e74fe54a11795d2a94b9b90ac1f18294214d956e95b882737a05319d5d11ff9.js' -m -c -o '/var/www/discourse/public/assets/application-1e74fe54a11795d2a94b9b90ac1f18294214d956e95b882737a05319d5d11ff9.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/application-1e74fe54a11795d2a94b9b90ac1f18294214d956e95b882737a05319d5d11ff9.js.map'"
Убит
Docker Manager: НЕ УДАЛОСЬ ОБНОВИТЬ
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:178:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:86:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.9/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.9/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands/runner/runner_command.rb:42:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command/base.rb:69:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/command.rb:46:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.9/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.9/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.9/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.9/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.9/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'
bin/rails:17:in `<main>'
Запуск 1 остановленного изначально воркера Unicorn
Имеет ли ваша машина достаточный объём оперативной памяти и swap-пространства? Команды free или top могут это показать. Также можно попробовать выполнить dmesg | egrep -3i kill
чтобы увидеть, есть ли информация о завершении процесса. Я подозреваю, что проблема в нехватке памяти (OOM-убийца).
Что ж, странно, но у меня обновление тоже только что завершилось неудачей точно так же! Я успешно обновил Docker Manager и Data Explorer, но на том же шаге получил ошибку «killed» при запуске uglifyjs на том же файле.
У меня есть Droplet от Digital Ocean с 1 ГБ ОЗУ и 2 ГБ подкачки, а форум относительно небольшой (резервная копия весит 700 МБ).
Ценой небольшого простоя я завершил обновление, применив стандартное обходное решение:
./launcher rebuild app
Однако, поскольку 1 ГБ ОЗУ + 2 ГБ подкачки являются рекомендуемой минимальной конфигурацией для небольшого форума, здесь, кажется, что-то не так.
Во время пересборки использование виртуальной памяти было не слишком высоким — минимальное значение, зафиксированное в тот же момент во время работы uglifyjs, составило:
# free
total used free shared buff/cache available
Mem: 1009264 380204 537900 5712 91160 510756
Swap: 2097144 498540 1598604
Это, вероятно, связано с изменениями в менеджере Docker, которые пытаются поддерживать работу сайта в течение более длительного времени во время обновления, что привело к увеличению требований к оперативной памяти в процессе обновления.
Пересборка контейнера всегда будет работать, так как она временно останавливает сайт, получая при этом максимальный объем оперативной памяти.