Problema con Aggiornamento [error 137]

Per l’installazione standard, il sito presenta questo log di errore per l’aggiornamento più recente:

********************************************************
*** Si prega di essere pazienti, i prossimi passaggi potrebbero richiedere del tempo ***
********************************************************
Ciclo di Unicorn, per liberare memoria
Riavvio di unicorn pid: 545
In attesa del ricaricamento di Unicorn.
In attesa del ricaricamento di Unicorn..
In attesa del ricaricamento di Unicorn...
In attesa del ricaricamento di Unicorn....
In attesa del ricaricamento di Unicorn.....
In attesa del ricaricamento di Unicorn......
In attesa del ricaricamento di Unicorn.......
In attesa del ricaricamento di Unicorn........
In attesa del ricaricamento di Unicorn.........
In attesa del ricaricamento di Unicorn..........
In attesa del ricaricamento di Unicorn...........
In attesa del ricaricamento di Unicorn............
In attesa del ricaricamento di Unicorn.............
In attesa del ricaricamento di Unicorn..............
In attesa del ricaricamento di Unicorn...............
In attesa del ricaricamento di Unicorn................
In attesa del ricaricamento di Unicorn.................
In attesa del ricaricamento di Unicorn..................
In attesa del ricaricamento di Unicorn...................
In attesa del ricaricamento di Unicorn....................
In attesa del ricaricamento di Unicorn.....................
In attesa del ricaricamento di Unicorn......................
In attesa del ricaricamento di Unicorn.......................
Utilizzo di libv8-node 18.16.0.0 (x86_64-linux)
Utilizzo di method_source 1.0.0
Utilizzo di thor 1.3.0
Utilizzo di zeitwerk 2.6.12
Utilizzo di railties 7.0.7
Utilizzo di request_store 1.5.1
Utilizzo di lograge 0.14.0
Utilizzo di logstash-event 1.2.02
Utilizzo di logstash-logger 0.26.1
Utilizzo di logster 2.13.1
Utilizzo di lru_redux 1.1.0
Utilizzo di lz4-ruby 0.3.3
Utilizzo di maxminddb 0.1.22
Utilizzo di memory_profiler 1.0.1
Utilizzo di message_bus 4.3.8
Utilizzo di mini_racer 0.8.0
Utilizzo di redis 4.8.1
Utilizzo di sidekiq 6.5.12
Utilizzo di mini_scheduler 0.16.0
Utilizzo di mini_sql 1.5.0
Utilizzo di mini_suffix 0.3.3
Utilizzo di multi_json 1.15.0
Utilizzo di multi_xml 0.6.0
Utilizzo di mustache 1.1.1
Utilizzo di uri 0.13.0
Utilizzo di net-http 0.4.0
Utilizzo di nio4r 2.7.0
Utilizzo di version_gem 1.1.3
Utilizzo di oauth-tty 1.0.5
Utilizzo di snaky_hash 2.0.1
Utilizzo di oauth 1.1.0
Utilizzo di oauth2 1.4.11
Utilizzo di oj 3.16.3
Utilizzo di omniauth 1.9.2
Utilizzo di omniauth-oauth2 1.7.3
Utilizzo di omniauth-facebook 9.0.0
Utilizzo di omniauth-github 1.4.0
Utilizzo di omniauth-google-oauth2 0.8.2
Utilizzo di omniauth-oauth 1.2.0
Utilizzo di omniauth-twitter 1.4.0
Utilizzo di optimist 3.1.0
Utilizzo di pg 1.5.4
Utilizzo di pry 0.14.2
Utilizzo di pry-byebug 3.10.1
Utilizzo di pry-rails 0.3.9
Utilizzo di puma 6.4.0
Utilizzo di rack-mini-profiler 3.3.0
Utilizzo di rack-protection 3.1.0
Utilizzo di rails_failover 2.0.1
Utilizzo di rails_multisite 5.0.0
Utilizzo di raindrops 0.20.1
Utilizzo di rbtrace 0.5.1
Utilizzo di rchardet 1.8.0
Utilizzo di redis-namespace 1.11.0
Utilizzo di rexml 3.2.6
Utilizzo di rinku 2.0.6
Utilizzo di rotp 6.3.0
Utilizzo di rqrcode_core 1.2.0
Utilizzo di rqrcode 2.2.0
Utilizzo di rss 0.3.0
Utilizzo di rtlcss 0.2.1
Utilizzo di ruby-readability 0.7.0
Utilizzo di rubyzip 2.3.2
Utilizzo di sanitize 6.1.0
Utilizzo di sass-embedded 1.69.5 (x86_64-linux-gnu)
Utilizzo di sassc-embedded 1.68.6
Utilizzo di sprockets 3.7.2 da https://github.com/rails/sprockets (a 3.x@f4d3dae)
Utilizzo di sprockets-rails 3.4.2
Utilizzo di sshkey 3.0.0
Utilizzo di stackprof 0.2.25
Utilizzo di tzinfo-data 1.2023.4
Utilizzo di uglifier 4.2.0
Utilizzo di unicorn 6.1.0
Utilizzo di web-push 3.0.1
Bundle completato! 138 dipendenze di Gemfile, 171 gem installate ora.
Le gem nei gruppi 'development' e 'test' non sono state installate.
Le gem in bundle sono installate in `./vendor/bundle`
1 gemma installata su cui dipendi direttamente sta cercando finanziamenti.
  Esegui `bundle fund` per i dettagli
$ yarn install
yarn install v1.22.19
[1/5] Validazione package.json...
[2/5] Risoluzione dei pacchetti...
success Già aggiornato.
$ 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] Risoluzione dei pacchetti...
warning Il campo Resolution "unset-value@2.0.1" è incompatibile con la versione richiesta "unset-value@^1.0.0"
success Già aggiornato.
$ ./run-patch-package
patch-package 8.0.0
Applicazione delle patch...
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 ✔
Completato in 4.79s.
Completato in 7.25s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
docker_manager è già alla versione compatibile più recente
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Il migratore multisite è in esecuzione utilizzando 1 thread
Migrazione di default
Seed di default
*** Compilazione degli asset. Questo richiederà del tempo ***
$ bundle exec rake themes:update assets:precompile
Controllo di 'Air Theme' per 'default'... aggiornamento da b9d44745 a 85dc24d6
Controllo di 'Modern Category + Group Boxes' per 'default'... aggiornato
Controllo di 'Discourse Clickable Topic' per 'default'... aggiornato
Controllo di 'discourse-search-banner' per 'default'... aggiornamento da 934e0d35 a 6ba0e9d0
Il heap_size_limit di Node.js (488.25) è inferiore a 2048 MB. Impostazione di --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: Stai utilizzando una versione non supportata di ember-cli-babel. Le proprietà data-test non vengono rimosse automaticamente dal tuo codice 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 Il comando è fallito con codice di uscita 137.
info Visita https://yarnpkg.com/en/docs/cli/run per la documentazione su questo comando.
Docker Manager: AGGIORNAMENTO FALLITO
#<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>'
Avvio di 1 worker Unicorn che erano stati fermati inizialmente

Sembra che stia ancora lavorando per elaborare l’aggiornamento, non sono sicuro se questo sia un problema serio o cosa si possa fare al riguardo.

Esaurito di memoria.

Dovrai aggiungere swap o RAM.

Ma puoi anche riprovare e potrebbe funzionare.

Se stai aggiornando dall’UX, dovresti provare una ricostruzione dalla riga di comando.

5 Mi Piace

Ho riscontrato lo stesso problema con 1 GB di RAM e 2 GB di swap (aggiornamento dall’interfaccia web). Ho aumentato lo swap a 3 GB, finora sembra che questa volta funzionerà (aggiornamento dalla CLI).

3 Mi Piace

Grazie, sì, questo è un server con 1 GB di memoria, sembra che non sia più l’ideale per Discourse, ne servono 2 per funzionare correttamente. L’installazione dell’aggiornamento potrebbe funzionare ora dopo il riavvio, vedremo se si completa.

No, fallito di nuovo. Questo era da UX, proverò il comando successivo.

Quanta RAM e swap hai?

free -h

Gli aggiornamenti online richiedono almeno 4 GB di questi tempi, per mia esperienza (si potrebbe cavarsela con 3…).

Dice 952 Mi di memoria e 2.0 Gi di swap. Non so cos’è lo swap?

Gli aggiornamenti sembrano aver funzionato dalla riga di comando apt upgrade

Con questo intendi dire che per poter eseguire aggiornamenti tramite l’interfaccia utente sono necessari 4 GB, idealmente, affinché funzioni?

Non so perché occupi più memoria della riga di comando.

Ho due siti di installazione standard su Digital Ocean, il costo totale per entrambi è di $16,32 al mese, molto meno dei $100 al mese per un sito standard ospitato, ma finora non ho avuto iscrizioni, quindi è uno spreco a meno che le persone non vogliano unirsi, potrebbero chiudere quei siti.

Questo non sembra corretto. Cosa stai cercando di fare?

Nella console, effettuato l’accesso come root, digito il comando “apt upgrade” e questo avvia l’installazione dell’aggiornamento.

Grazie a @Arkshine per averlo menzionato qui:

Non so cosa significhi “Apt”, ma sembra essere necessario affinché questo funzioni.

Solo per verificare, stai partendo dal presupposto che stia aggiornando il tuo Discourse o il tuo server?

Bene, avevo pensato di aver aggiornato Discourse, ma forse è stato il server Ubuntu ad essere aggiornato, non sono sicuro.

Penso che potresti trarre beneficio dalla lettura di altri argomenti sull’argomento. Se fai una ricerca su Documentation, o una ricerca in generale, penso che troverai molte informazioni che dovrebbero aiutarti a colmare le lacune nella tua conoscenza. C’è una notevole quantità di consigli che coprono le basi da cui puoi imparare. :+1:

2 Mi Piace

Ok, c’è molto da imparare per questo.

2 Mi Piace

Mi è sfuggito che hai scritto ricostruzione può ricostruire l’app.

Ecco la guida ufficiale:

Perché eseguire il sito web (sebbene con meno Unicorns) + eseguire una build contemporaneamente è costoso in termini di memoria?

Ho provato questo sul mio server (3 VCPU, 4GB):

Online:

2.21 prima dell’aggiornamento → 1.7 poiché libera memoria → 3.5 picco durante la build (GB)

Anche lo swap è aumentato di circa 200 MB fino a un picco di circa 800 MB

Riga di comando (non confrontabile direttamente poiché subito dopo quanto sopra)

1.7 prima dell’aggiornamento → scende a ~250 MB! → sale e sale fino a un picco di 3.25 durante la compilazione degli asset, ma generalmente molto più basso.

L’utilizzo dello swap è stato molto basso durante quasi tutto il processo.

Avvertenza: tutte le cifre osservate in htop potrebbero quindi essere imprecise, probabilmente è meglio rappresentarle graficamente.

Sono rimasto sorpreso da quanto fossero “picchiate” le ricostruzioni offline. La precompilazione degli asset utilizza sicuramente molta memoria - forse di più quanti più VCPU hai poiché potrebbe farlo in parallelo?

Sono rimasto anche sorpreso da quanto poca differenza ci fosse nel picco nel mio caso, sebbene l’utilizzo dello swap fosse significativamente inferiore e in generale, l’uso della memoria fosse molto inferiore per una ricostruzione offline, rimanendo nei 100 MB durante il 95% del processo, mentre un aggiornamento online era minimo 1,7 GB.

2 Mi Piace

Sembra corretto, non c’è bisogno di un punto interrogativo lì!

Quindi ricostruire l’app aggiorna automaticamente alla versione più recente, a quanto pare?

Esiste un modo supportato o non supportato per mantenere in esecuzione versioni precedenti di Discourse, o si effettuano nuove installazioni per versioni precedenti?

No, ma puoi rallentare le cose passando a stable.

Sfortunatamente, questa volta hai perso il treno dato che non puoi tornare indietro.

Ok, potresti voler passare a quell’impostazione stabile solo per gli aggiornamenti testati e stabili, non per quelli per sviluppatori/beta. Sto cercando di capire come fare.

1 Mi Piace