Problem mit Upgrade [Fehler 137]

Für die Standardinstallation gibt es bei der letzten Aktualisierung das folgende Fehlerprotokoll:

********************************************************
*** Bitte haben Sie Geduld, die nächsten Schritte können eine Weile dauern ***
********************************************************
Unicorn wird neu gestartet, um Speicher freizugeben
Unicorn-Prozess wird neu gestartet: 545
Warte auf das Neuladen von Unicorn.
Warte auf das Neuladen von Unicorn..
Warte auf das Neuladen von Unicorn...
Warte auf das Neuladen von Unicorn....
Warte auf das Neuladen von Unicorn.....
Warte auf das Neuladen von Unicorn......
Warte auf das Neuladen von Unicorn.......
Warte auf das Neuladen von Unicorn........
Warte auf das Neuladen von Unicorn.........
Warte auf das Neuladen von Unicorn..........
Warte auf das Neuladen von Unicorn...........
Warte auf das Neuladen von Unicorn............
Warte auf das Neuladen von Unicorn.............
Warte auf das Neuladen von Unicorn..............
Warte auf das Neuladen von Unicorn...............
Warte auf das Neuladen von Unicorn................
Warte auf das Neuladen von Unicorn.................
Warte auf das Neuladen von Unicorn..................
Warte auf das Neuladen von Unicorn...................
Warte auf das Neuladen von Unicorn....................
Warte auf das Neuladen von Unicorn.....................
Warte auf das Neuladen von Unicorn......................
Warte auf das Neuladen von Unicorn.......................
Verwende libv8-node 18.16.0.0 (x86_64-linux)
Verwende method_source 1.0.0
Verwende thor 1.3.0
Verwende zeitwerk 2.6.12
Verwende railties 7.0.7
Verwende request_store 1.5.1
Verwende lograge 0.14.0
Verwende logstash-event 1.2.02
Verwende logstash-logger 0.26.1
Verwende logster 2.13.1
Verwende lru_redux 1.1.0
Verwende lz4-ruby 0.3.3
Verwende maxminddb 0.1.22
Verwende memory_profiler 1.0.1
Verwende message_bus 4.3.8
Verwende mini_racer 0.8.0
Verwende redis 4.8.1
Verwende sidekiq 6.5.12
Verwende mini_scheduler 0.16.0
Verwende mini_sql 1.5.0
Verwende mini_suffix 0.3.3
Verwende multi_json 1.15.0
Verwende multi_xml 0.6.0
Verwende mustache 1.1.1
Verwende uri 0.13.0
Verwende net-http 0.4.0
Verwende nio4r 2.7.0
Verwende version_gem 1.1.3
Verwende oauth-tty 1.0.5
Verwende snaky_hash 2.0.1
Verwende oauth 1.1.0
Verwende oauth2 1.4.11
Verwende oj 3.16.3
Verwende omniauth 1.9.2
Verwende omniauth-oauth2 1.7.3
Verwende omniauth-facebook 9.0.0
Verwende omniauth-github 1.4.0
Verwende omniauth-google-oauth2 0.8.2
Verwende omniauth-oauth 1.2.0
Verwende omniauth-twitter 1.4.0
Verwende optimist 3.1.0
Verwende pg 1.5.4
Verwende pry 0.14.2
Verwende pry-byebug 3.10.1
Verwende pry-rails 0.3.9
Verwende puma 6.4.0
Verwende rack-mini-profiler 3.3.0
Verwende rack-protection 3.1.0
Verwende rails_failover 2.0.1
Verwende rails_multisite 5.0.0
Verwende raindrops 0.20.1
Verwende rbtrace 0.5.1
Verwende rchardet 1.8.0
Verwende redis-namespace 1.11.0
Verwende rexml 3.2.6
Verwende rinku 2.0.6
Verwende rotp 6.3.0
Verwende rqrcode_core 1.2.0
Verwende rqrcode 2.2.0
Verwende rss 0.3.0
Verwende rtlcss 0.2.1
Verwende ruby-readability 0.7.0
Verwende rubyzip 2.3.2
Verwende sanitize 6.1.0
Verwende sass-embedded 1.69.5 (x86_64-linux-gnu)
Verwende sassc-embedded 1.68.6
Verwende sprockets 3.7.2 von https://github.com/rails/sprockets (bei 3.x@f4d3dae)
Verwende sprockets-rails 3.4.2
Verwende sshkey 3.0.0
Verwende stackprof 0.2.25
Verwende tzinfo-data 1.2023.4
Verwende uglifier 4.2.0
Verwende unicorn 6.1.0
Verwende web-push 3.0.1
Bundle abgeschlossen! 138 Gemfile-Abhängigkeiten, 171 Gems jetzt installiert.
Gems in den Gruppen 'development' und 'test' wurden nicht installiert.
Gebündelte Gems werden in `./vendor/bundle` installiert.
1 installiertes Gem, auf das Sie direkt angewiesen sind, sucht nach Finanzierung.
  Führen Sie `bundle fund` für Details aus.
$ yarn install
yarn install v1.22.19
[1/5] Validating package.json...
[2/5] Resolving packages...
success Bereits auf dem neuesten Stand.
$ 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] Resolving packages...
warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
success Bereits auf dem neuesten Stand.
$ ./run-patch-package
patch-package 8.0.0
Patches werden angewendet...
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 ✔
Fertig in 4.79s.
Fertig in 7.25s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
docker_manager ist bereits in der neuesten kompatiblen Version
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Multisite-Migrator läuft mit 1 Threads
Migrieren von default
Seeding von default
*** Assets werden gebündelt. Dies wird eine Weile dauern ***
$ bundle exec rake themes:update assets:precompile
Prüfe 'Air Theme' für 'default'... Aktualisierung von b9d44745 auf 85dc24d6
Prüfe 'Modern Category + Group Boxes' für 'default'... auf dem neuesten Stand
Prüfe 'Discourse Clickable Topic' für 'default'... auf dem neuesten Stand
Prüfe 'discourse-search-banner' für 'default'... Aktualisierung von 934e0d35 auf 6ba0e9d0
Node.js heap_size_limit (488.25) ist kleiner als 2048MB. Setze --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: Sie verwenden eine nicht unterstützte ember-cli-babel-Version. data-test-Eigenschaften werden nicht automatisch aus Ihrem JS-Code entfernt.
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 Besuchen Sie https://yarnpkg.com/en/docs/cli/run für Dokumentation zu diesem Befehl.
Docker Manager: UPGRADE FEHLGESCHLAGEN
#<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>'
Starte 1 Unicorn-Worker(s), die ursprünglich gestoppt wurden

Es scheint immer noch zu funktionieren, um das Upgrade zu verarbeiten, aber ich bin mir nicht sicher, ob dies ein ernsthaftes Problem ist oder was dagegen getan werden kann.

Nicht genügend Arbeitsspeicher.
Sie müssen Swap oder RAM hinzufügen.
Sie können es aber auch erneut versuchen, und es könnte funktionieren.
Wenn Sie über die UX aktualisieren, sollten Sie einen Kommandozeilen-Neubau versuchen.

5 „Gefällt mir“

Auf das gleiche Problem gestoßen mit 1 GB RAM und 2 GB Swap (Upgrade über die Weboberfläche). Swap auf 3 GB erhöht, bisher sieht es so aus, als würde es diesmal funktionieren (Upgrade über die CLI).

3 „Gefällt mir“

Danke, ja, das ist ein 1 GB-Speicher-Server, der anscheinend nicht mehr ideal für Discourse ist und 2 GB zum ordnungsgemäßen Funktionieren benötigt. Das Update-Installationsprogramm funktioniert möglicherweise jetzt nach einem Neustart, mal sehen, ob es abgeschlossen wird.

Nein, wieder fehlgeschlagen. Das kam von UX, ich versuche es als Nächstes über die Befehlszeile.

Wie viel RAM und Swap hast du?

free -h

Online-Updates benötigen heutzutage meiner Erfahrung nach mindestens 4 GB (vielleicht kommt man mit 3 GB durch …)

Zeigt 952 Mi Speicher und 2,0 Gi Swap an. Weiß nicht, was Swap ist?

Upgrades schienen von der Befehlszeile apt upgrade aus zu funktionieren

Meinen Sie damit, dass Sie für Updates über die UX 4 GB benötigen, idealerweise, damit dies funktioniert?

Ich weiß nicht, warum das mehr Speicherplatz als die Befehlszeile benötigt.

Ich habe zwei Standard-Installationsstandorte auf DigitalOcean, die Gesamtkosten für beide betragen 16,32 US-Dollar pro Monat. Das ist viel weniger, als 100 US-Dollar pro Monat für eine Standard-Hosting-Site zu zahlen, aber bisher gab es keine Anmeldungen dafür, daher ist dies eine Verschwendung, es sei denn, Leute wollen sich anmelden, dann werden diese Websites möglicherweise geschlossen.

Das scheint nicht richtig zu sein. Was versuchst du zu tun?

Als Root in der Konsole angemeldet, gebe ich den Befehl „apt upgrade“ ein und dies initiiert die Upgrade-Installation.

Danke an @Arkshine für den Hinweis hier:

Ich weiß nicht, was „Apt“ bedeutet, aber das scheint notwendig zu sein, damit dies funktioniert.

Geht es nur darum, zu prüfen, ob Sie davon ausgehen, dass dies Ihr Discourse oder Ihren Server aktualisiert?

Ich dachte, ich hätte Discourse aktualisiert, aber vielleicht war es stattdessen der Ubuntu-Server, der aktualisiert wurde, ich bin mir nicht sicher.

Ich denke, Sie könnten davon profitieren, wenn Sie sich einige weitere Themen zu diesem Thema ansehen. Wenn Sie die Documentation durchsuchen oder einfach allgemein suchen, werden Sie meiner Meinung nach genügend Informationen finden, die die Lücken in Ihrem Wissen füllen sollten. Es gibt eine beträchtliche Menge an Ratschlägen, die die Grundlagen abdecken, von denen Sie lernen können. :+1:

2 „Gefällt mir“

Ok, viel zu lernen für das.

2 „Gefällt mir“

Habe übersehen, dass Sie schrieben, dass Neuerstellung die App neu erstellen kann.

Hier ist die offizielle Anleitung:

Weil der gleichzeitige Betrieb der Website (wenn auch mit weniger Unicorns) und die Durchführung eines Builds speicherintensiv ist?

Ich habe dies auf meinem Server (3 VCPUs, 4 GB) ausprobiert:

Online:

2,21 vor dem Upgrade → 1,7, da es Speicher freigibt → 3,5 Spitzen während des Builds (GB)

Swap stieg ebenfalls um ~200 MB auf Spitzenwerte von ~800 MB

Kommandozeile (nicht Äpfel mit Äpfeln vergleichbar, da direkt nach dem oben genannten)

1,7 vor dem Upgrade → fällt auf ~250 MB! → steigt und steigt bis zu Spitzenwerten von 3,25 während der Asset-Kompilierung, aber im Allgemeinen viel niedriger.

Die Swap-Nutzung war während fast des gesamten Prozesses sehr gering.

Vorbehalt: Alle Zahlen wurden in htop beobachtet und sind daher möglicherweise ungenau. Wahrscheinlich ist es am besten, sie zu grafisch darzustellen.

Ich war überrascht, wie “spitzenbetont” Offline-Neuerstellungen waren. Das Vorabkompilieren von Assets verbraucht definitiv viel Speicher – vielleicht mehr, je mehr VCPUs Sie haben, da es möglicherweise einige davon parallel durchführt?

Ich war auch überrascht, wie gering der Unterschied bei den Spitzenwerten in meinem Fall war, obwohl die Swap-Nutzung signifikant niedriger war und die Speichernutzung im Allgemeinen bei einer Offline-Neuerstellung viel niedriger war und während 95 % des Prozesses im Bereich von Hunderten von MB blieb, während ein Online-Upgrade mindestens 1,7 GB betrug.

2 „Gefällt mir“

Das scheint richtig zu sein, da ist kein Fragezeichen nötig!

Also wird die App neu erstellt und dann automatisch auf die aktuellste Version aktualisiert?

Gibt es eine unterstützte oder nicht unterstützte Möglichkeit, frühere Versionen von Discourse am Laufen zu halten oder neue Installationen für frühere Versionen durchzuführen?

Nein, aber Sie können die Dinge verlangsamen, indem Sie zu stable wechseln.

Leider haben Sie dieses Mal den Anschluss verpasst, da Sie nicht zurückgehen können.

Ok, möchten Sie vielleicht zu dieser stabilen Einstellung wechseln, nur für stabil getestete Updates, nicht für die Entwickler-/Beta-Versionen. Ich möchte herausfinden, wie das geht.

1 „Gefällt mir“