Problema com a Atualização [erro 137]

Para a instalação padrão, o site tem este log de erro para a atualização mais recente:

********************************************************
*** Por favor, seja paciente, os próximos passos podem demorar um pouco ***
********************************************************
Ciclagem do Unicorn, para liberar memória
Reiniciando o unicorn pid: 545
Aguardando o Unicorn recarregar.
Aguardando o Unicorn recarregar..
Aguardando o Unicorn recarregar...
Aguardando o Unicorn recarregar....
Aguardando o Unicorn recarregar.....
Aguardando o Unicorn recarregar......
Aguardando o Unicorn recarregar.......
Aguardando o Unicorn recarregar........
Aguardando o Unicorn recarregar.........
Aguardando o Unicorn recarregar..........
Aguardando o Unicorn recarregar...........
Aguardando o Unicorn recarregar............
Aguardando o Unicorn recarregar.............
Aguardando o Unicorn recarregar..............
Aguardando o Unicorn recarregar...............
Aguardando o Unicorn recarregar................
Aguardando o Unicorn recarregar.................
Aguardando o Unicorn recarregar..................
Aguardando o Unicorn recarregar...................
Aguardando o Unicorn recarregar....................
Aguardando o Unicorn recarregar.....................
Aguardando o Unicorn recarregar......................
Aguardando o Unicorn recarregar.......................
Usando libv8-node 18.16.0.0 (x86_64-linux)
Usando method_source 1.0.0
Usando thor 1.3.0
Usando zeitwerk 2.6.12
Usando railties 7.0.7
Usando request_store 1.5.1
Usando lograge 0.14.0
Usando logstash-event 1.2.02
Usando logstash-logger 0.26.1
Usando logster 2.13.1
Usando lru_redux 1.1.0
Usando lz4-ruby 0.3.3
Usando maxminddb 0.1.22
Usando memory_profiler 1.0.1
Usando message_bus 4.3.8
Usando mini_racer 0.8.0
Usando redis 4.8.1
Usando sidekiq 6.5.12
Usando mini_scheduler 0.16.0
Usando mini_sql 1.5.0
Usando mini_suffix 0.3.3
Usando multi_json 1.15.0
Usando multi_xml 0.6.0
Usando mustache 1.1.1
Usando uri 0.13.0
Usando net-http 0.4.0
Usando nio4r 2.7.0
Usando version_gem 1.1.3
Usando oauth-tty 1.0.5
Usando snaky_hash 2.0.1
Usando oauth 1.1.0
Usando oauth2 1.4.11
Usando oj 3.16.3
Usando omniauth 1.9.2
Usando omniauth-oauth2 1.7.3
Usando omniauth-facebook 9.0.0
Usando omniauth-github 1.4.0
Usando omniauth-google-oauth2 0.8.2
Usando omniauth-oauth 1.2.0
Usando omniauth-twitter 1.4.0
Usando optimist 3.1.0
Usando pg 1.5.4
Usando pry 0.14.2
Usando pry-byebug 3.10.1
Usando pry-rails 0.3.9
Usando puma 6.4.0
Usando rack-mini-profiler 3.3.0
Usando rack-protection 3.1.0
Usando rails_failover 2.0.1
Usando rails_multisite 5.0.0
Usando raindrops 0.20.1
Usando rbtrace 0.5.1
Usando rchardet 1.8.0
Usando redis-namespace 1.11.0
Usando rexml 3.2.6
Usando rinku 2.0.6
Usando rotp 6.3.0
Usando rqrcode_core 1.2.0
Usando rqrcode 2.2.0
Usando rss 0.3.0
Usando rtlcss 0.2.1
Usando ruby-readability 0.7.0
Usando rubyzip 2.3.2
Usando sanitize 6.1.0
Usando sass-embedded 1.69.5 (x86_64-linux-gnu)
Usando sassc-embedded 1.68.6
Usando sprockets 3.7.2 de https://github.com/rails/sprockets (em 3.x@f4d3dae)
Usando sprockets-rails 3.4.2
Usando sshkey 3.0.0
Usando stackprof 0.2.25
Usando tzinfo-data 1.2023.4
Usando uglifier 4.2.0
Usando unicorn 6.1.0
Usando web-push 3.0.1
Bundle completo! 138 dependências do Gemfile, 171 gems agora instaladas.
Gems nos grupos 'development' e 'test' não foram instaladas.
Gems empacotadas são instaladas em `./vendor/bundle`
1 gem instalada da qual você depende diretamente está procurando por financiamento.
  Execute `bundle fund` para detalhes
$ yarn install
yarn install v1.22.19
[1/5] Validando package.json...
[2/5] Resolvendo pacotes...
success Já está atualizado.
$ yarn --cwd app/assets/javascripts $(node -e 'const argv = JSON.parse(process.env.npm_config_argv).original; const passthrough = [`--frozen-lockfile`, `-s`].filter(arg => argv.includes(arg)); console.log(passthrough.join(` `));')
yarn install v1.22.19
[1/4] Resolvendo pacotes...
warning O campo Resolution "unset-value@2.0.1" é incompatível com a versão solicitada "unset-value@^1.0.0"
success Já está atualizado.
$ ./run-patch-package
patch-package 8.0.0
Aplicando patches...
babel-plugin-debug-macros@0.3.4 ✔
content-tag@1.2.2 ✔
ember-cli@5.0.0 ✔
ember-this-fallback@0.4.0 (1 deprecation-name) ✔
ember-this-fallback@0.4.0 (2 themes) ✔
virtual-dom@2.1.1 ✔
Concluído em 4.79s.
Concluído em 7.25s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
docker_manager já está na versão compatível mais recente
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
O migrador multisite está em execução usando 1 threads
Migrando default
Populando default
*** Empacotando assets. Isso levará um tempo ***
$ bundle exec rake themes:update assets:precompile
Verificando 'Air Theme' para 'default'... atualizando de b9d44745 para 85dc24d6
Verificando 'Modern Category + Group Boxes' para 'default'... atualizado
Verificando 'Discourse Clickable Topic' para 'default'... atualizado
Verificando 'discourse-search-banner' para 'default'... atualizando de 934e0d35 para 6ba0e9d0
Node.js heap_size_limit (488.25) é menor que 2048MB. Definindo --max-old-space-size=2048.
yarn run v1.22.19
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build
Building
Environment: development
WARNING: ember-test-selectors: Você está usando uma versão não suportada do ember-cli-babel. Propriedades data-test não são removidas automaticamente do seu código JS.
building...
...[ConfigLoader]
...[Babel: @embroider/macros > applyPatches]
...[Babel: discourse-widget-hbs > applyPatches]
...[Babel: ember-source > applyPatches]
...[ember.js]
...[Babel: discourse-common > applyPatches]
...[Babel: truth-helpers > applyPatches]
...[Babel: ember-tracked-storage-polyfill > applyPatches]
...[Babel: @ember/legacy-built-in-components > applyPatches]
...[Babel: @ember/render-modifiers > applyPatches]
...[Babel: @ember/test-helpers > applyPatches]
...[Babel: @ember/test-waiters > applyPatches]
...[Babel: @embroider/util > applyPatches]
...[Babel: @glimmer/component > applyPatches]
...[Babel: dialog-holder > applyPatches]
...[Babel: ember-this-fallback > applyPatches]
...[Babel: ember-buffered-proxy > applyPatches]
...[Babel: ember-cached-decorator-polyfill > applyPatches]
...[Babel: ember-exam > applyPatches]
...[Babel: ember-functions-as-helper-polyfill > applyPatches]
...[Babel: ember-load-initializers > applyPatches]
...[Babel: ember-on-resize-modifier > applyPatches]
...[Babel: ember-resize-observer-service > applyPatches]
...[Babel: ember-router-service-refresh-polyfill > applyPatches]
...[Babel: float-kit > applyPatches]
...[Babel: select-kit > applyPatches]
...[@embroider/compat/app]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
Killed
error Command failed with exit code 137.
info Visite https://yarnpkg.com/en/docs/cli/run para documentação sobre este comando.
Docker Manager: FALHA AO ATUALIZAR
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:111: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/3.2.0/gems/railties-7.0.7/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.0/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.7/lib/rails/commands.rb:18:in `<main>'
/internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.17.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Iniciando 1 worker(s) do Unicorn que foram parados inicialmente

Parece que ainda está funcionando para processar a atualização, mas não tenho certeza se isso é um problema sério ou o que pode ser feito a respeito.

Fora de memória.

Você precisará adicionar swap ou ram.

Mas também pode tentar novamente e pode funcionar.

Se você estiver atualizando a partir da UX, deve tentar uma reconstrução pela linha de comando.

5 curtidas

Encontrei o mesmo problema com 1 GB de RAM e 2 GB de swap (atualizando pela interface web). Aumentei o swap para 3 GB, até agora parece que vai funcionar desta vez (atualizando pela CLI).

3 curtidas

Obrigado, sim, este é um servidor com 1 GB de memória, parece que não é mais ideal para o Discourse, precisa de 2 para funcionar corretamente. A instalação da atualização pode estar funcionando agora após a reinicialização, veremos se ela é concluída.

Não, falhou novamente. Isso foi do UX, tentarei a linha de comando em seguida.

Qual a quantidade de RAM e swap que você tem?

free -h

Atualizações online, pelo menos 4 GB hoje em dia, na minha experiência (talvez seja possível com 3…)

Diz 952 Mi de Memória e 2.0 Gi de swap. Não sei o que é swap?

As atualizações pareceram funcionar a partir da linha de comando apt upgrade

Com isso você quer dizer que para poder executar atualizações pela UX você precisa de 4 GB idealmente para que funcione?

Não sei por que isso consome mais memória do que a linha de comando.

Tenho dois sites de instalação padrão no Digital Ocean, o custo total para ambos é de US$ 16,32 por mês, isso é muito menos do que pagar US$ 100 por mês por um site padrão hospedado, mas até agora não tive nenhuma inscrição para eles, então isso é um desperdício, a menos que as pessoas queiram participar, podem fechar esses sites.

Isso não parece correto. O que você está tentando fazer?

No console logado como root, digito o comando "apt upgrade" e isso inicia a instalação da atualização.

Graças a @Arkshine por mencionar isso aqui:

Não sei o que "Apt" significa, mas isso parece ser necessário para que funcione.

Só para confirmar, você está partindo do pressuposto de que está atualizando seu Discourse ou seu servidor?

Bem, pensei que tinha feito o upgrade do Discourse, mas talvez tenha sido o servidor Ubuntu que estava sendo atualizado, não tenho certeza.

Acho que você pode se beneficiar lendo mais tópicos sobre o assunto. Se você pesquisar na Documentation, ou apenas uma pesquisa em geral, acho que encontrará muitas informações que devem ajudar a preencher as lacunas em seu conhecimento. Há uma quantidade substancial de conselhos que cobrem o básico do qual você pode aprender. :+1:

2 curtidas

Ok, muito a aprender com isso.

2 curtidas

Perdi que você escreveu reconstruir pode reconstruir o aplicativo.

Aqui está o guia oficial:

Porque executar o site (embora com menos Unicorns) + realizar um build ao mesmo tempo é caro em memória?

Eu testei isso no meu servidor (3 VCPU, 4GB):

Online:

2.21 antes da atualização → 1.7 pois libera memória → 3.5 pico durante o build (GBs)

O Swap também aumentou ~200MB para um pico de ~800MB

Linha de comando (não é comparável pois logo após o acima)

1.7 antes da atualização → cai para ~250MB! → sobe e sobe para um pico de 3.25 durante a compilação de assets, mas geralmente muito menor.

O uso de Swap foi muito baixo durante quase todo o processo.

Observação: todos os números observados no htop podem ser imprecisos, provavelmente é melhor plotar um gráfico.

Fiquei surpreso com o quão “pico” foram os rebuilds offline. A pré-compilação de assets definitivamente usa muita memória - talvez quanto mais VCPUs você tiver, pois pode fazer parte disso em paralelo?

Também fiquei surpreso com a pouca diferença no pico no meu caso, embora o uso de swap tenha sido significativamente menor e, em geral, o uso de memória tenha sido muito menor para um rebuild offline, permanecendo na casa dos 100MB durante 95% do processo, enquanto uma atualização online foi de no mínimo 1.7GB.

2 curtidas

Isso parece correto, não há necessidade de um ponto de interrogação aí!

Então, reconstruir o aplicativo atualiza automaticamente para a versão mais recente, parece?

Existe uma maneira suportada ou não suportada de manter versões anteriores do discourse em execução, ou fazer novas instalações para versões anteriores?

Não, mas você pode desacelerar as coisas mudando para stable.

Infelizmente, você perdeu o barco desta vez, pois não é possível voltar atrás.

Ok, talvez queira mudar para essa configuração estável apenas para atualizações estáveis testadas, não para as de desenvolvedor/beta. Estou tentando descobrir como fazer isso.

1 curtida