アップグレードの問題 [エラー137]

標準のインストールサイトでは、最新のアップグレードで次のエラーログが表示されます。


********************************************************
*** 少々お待ちください。次のステップには時間がかかる場合があります ***
********************************************************
メモリを解放するためにユニコーンを循環させています
ユニコーンを再起動しています pid: 545
ユニコーンの再読み込みを待っています。
ユニコーンの再読み込みを待っています..
ユニコーンの再読み込みを待っています...
ユニコーンの再読み込みを待っています....
ユニコーンの再読み込みを待っています.....
ユニコーンの再読み込みを待っています......
ユニコーンの再読み込みを待っています.......
ユニコーンの再読み込みを待っています........
ユニコーンの再読み込みを待っています.........
ユニコーンの再読み込みを待っています..........
ユニコーンの再読み込みを待っています...........
ユニコーンの再読み込みを待っています............
ユニコーンの再読み込みを待っています.............
ユニコーンの再読み込みを待っています..............
ユニコーンの再読み込みを待っています...............
ユニコーンの再読み込みを待っています................
ユニコーンの再読み込みを待っています.................
ユニコーンの再読み込みを待っています..................
ユニコーンの再読み込みを待っています...................
ユニコーンの再読み込みを待っています....................
ユニコーンの再読み込みを待っています.....................
ユニコーンの再読み込みを待っています......................
ユニコーンの再読み込みを待っています.......................
libv8-node 18.16.0.0 (x86_64-linux) を使用しています
method_source 1.0.0 を使用しています
thor 1.3.0 を使用しています
zeitwerk 2.6.12 を使用しています
railtie 7.0.7 を使用しています
request_store 1.5.1 を使用しています
lograge 0.14.0 を使用しています
logstash-event 1.2.02 を使用しています
logstash-logger 0.26.1 を使用しています
logster 2.13.1 を使用しています
lru_redux 1.1.0 を使用しています
lz4-ruby 0.3.3 を使用しています
maxminddb 0.1.22 を使用しています
memory_profiler 1.0.1 を使用しています
message_bus 4.3.8 を使用しています
mini_racer 0.8.0 を使用しています
redis 4.8.1 を使用しています
sidekiq 6.5.12 を使用しています
mini_scheduler 0.16.0 を使用しています
mini_sql 1.5.0 を使用しています
mini_suffix 0.3.3 を使用しています
multi_json 1.15.0 を使用しています
multi_xml 0.6.0 を使用しています
mustache 1.1.1 を使用しています
uri 0.13.0 を使用しています
net-http 0.4.0 を使用しています
nio4r 2.7.0 を使用しています
version_gem 1.1.3 を使用しています
oauth-tty 1.0.5 を使用しています
snaky_hash 2.0.1 を使用しています
oauth 1.1.0 を使用しています
oauth2 1.4.11 を使用しています
oj 3.16.3 を使用しています
omniauth 1.9.2 を使用しています
omniauth-oauth2 1.7.3 を使用しています
omniauth-facebook 9.0.0 を使用しています
omniauth-github 1.4.0 を使用しています
omniauth-google-oauth2 0.8.2 を使用しています
omniauth-oauth 1.2.0 を使用しています
omniauth-twitter 1.4.0 を使用しています
optimist 3.1.0 を使用しています
pg 1.5.4 を使用しています
pry 0.14.2 を使用しています
pry-byebug 3.10.1 を使用しています
pry-rails 0.3.9 を使用しています
puma 6.4.0 を使用しています
rack-mini-profiler 3.3.0 を使用しています
rack-protection 3.1.0 を使用しています
rails_failover 2.0.1 を使用しています
rails_multisite 5.0.0 を使用しています
raindrops 0.20.1 を使用しています
rbtrace 0.5.1 を使用しています
rchardet 1.8.0 を使用しています
redis-namespace 1.11.0 を使用しています
rexml 3.2.6 を使用しています
rinku 2.0.6 を使用しています
rotp 6.3.0 を使用しています
rqrcode_core 1.2.0 を使用しています
rqrcode 2.2.0 を使用しています
rss 0.3.0 を使用しています
rtlcss 0.2.1 を使用しています
ruby-readability 0.7.0 を使用しています
rubyzip 2.3.2 を使用しています
sanitize 6.1.0 を使用しています
sass-embedded 1.69.5 (x86_64-linux-gnu) を使用しています
sassc-embedded 1.68.6 を使用しています
sprockets 3.7.2 (https://github.com/rails/sprockets から、3.x@f4d3dae) を使用しています
sprockets-rails 3.4.2 を使用しています
sshkey 3.0.0 を使用しています
stackprof 0.2.25 を使用しています
tzinfo-data 1.2023.4 を使用しています
uglifier 4.2.0 を使用しています
unicorn 6.1.0 を使用しています
web-push 3.0.1 を使用しています
Bundle complete! 138 Gemfile dependencies, 171 gems now installed。
'development' および 'test' グループの Gem はインストールされませんでした。
バンドルされた Gem は `./vendor/bundle` にインストールされます。
直接依存している Gem のうち 1 つが資金提供を求めています。
  詳細については `bundle fund` を実行してください。
$ yarn install
yarn install v1.22.19
[1/5] package.json を検証中...
[2/5] パッケージを解決中...
success すでに最新の状態です。
$ 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] パッケージを解決中...
warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
success すでに最新の状態です。
$ ./run-patch-package
patch-package 8.0.0
パッチを適用中...
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 ✔
Done in 4.79s.
Done in 7.25s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
docker_manager はすでに最新の互換性のあるバージョンです
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Multisite migrator は 1 つのスレッドを使用して実行中です

デフォルトを移行中
デフォルトをシード中
*** アセットをバンドルしています。これには時間がかかります ***
$ bundle exec rake themes:update assets:precompile
'Air Theme' を 'default' についてチェック中... b9d44745 から 85dc24d6 に更新中
'Modern Category + Group Boxes' を 'default' についてチェック中... 最新の状態です
'Discourse Clickable Topic' を 'default' についてチェック中... 最新の状態です
'discourse-search-banner' を 'default' についてチェック中... 934e0d35 から 6ba0e9d0 に更新中
Node.js heap_size_limit (488.25) は 2048MB 未満です。--max-old-space-size=2048 を設定しています。
yarn run v1.22.19
$ /var/www/discourse/app/assets/javascripts/node_modules/.bin/ember build
ビルド中
Environment: development
WARNING: ember-test-selectors: サポートされていない ember-cli-babel バージョンを使用しています。data-test プロパティは JS コードから自動的に削除されません。
ビルド中...
...[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 このコマンドに関するドキュメントについては、https://yarnpkg.com/en/docs/cli/run を参照してください。
Docker Manager: アップグレードに失敗しました
#<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>'
最初に停止された 1 つのユニコーンワーカーを起動しています

アップグレード処理はまだ続いているようですが、これは深刻な問題でしょうか、それとも何かできることはありますか?

メモリ不足です。
スワップまたはRAMを追加する必要があります。

しかし、もう一度試してみるとうまくいくかもしれません。

UXからアップデートしている場合は、コマンドラインで再構築を試してください。

「いいね!」 5

RAM 1 GB およびスワップ 2 GB で同じ問題が発生しました (Web インターフェイスからのアップグレード)。スワップを 3 GB に増やしたところ、今回は機能しそうです (CLI からのアップグレード)。

「いいね!」 3

ありがとうございます。これは1GBメモリのサーバーで、Discourseにはもう理想的ではないようです。正常に動作するには2GB必要です。再起動後、アップデートのインストールが機能するようになったようです。完了するかどうか見てみます。

いいえ、また失敗しました。これはUXからのもので、次にコマンドラインを試します。

RAMとスワップはどのくらいありますか?

free -h

私の経験では、オンラインアップデートには現在4GB(3GBでもなんとかなるかもしれませんが…)が必要です。

952MBのメモリと2.0GBのスワップと表示されます。スワップとは何ですか?

コマンドライン apt upgrade からのアップグレードはうまくいったようです

UX経由でアップデートを実行するには、理想的には4GB必要ということですか?

なぜコマンドラインよりも多くのメモリを消費するのか分かりません。

DigitalOceanに標準的なインストールサイトが2つあり、両方の合計費用は月額$16.32です。これは、標準的なホストサイト1つに月額$100を支払うよりもはるかに少ないですが、これまでのところサインアップがないため、人々が参加したいと思わない限り無駄であり、それらのサイトは閉鎖される可能性があります。

これは正しくないようです。何をしようとしていますか?

root としてコンソールにログインし、「apt upgrade」コマンドを入力すると、アップグレードのインストールが開始されます。

この件について言及してくれた @Arkshine さんに感謝します:

「Apt」が何を意味するのかはわかりませんが、これが機能するためには必要のようです。

確認ですが、Discourseのアップグレードを想定していますか、それともサーバーのアップグレードを想定していますか?

ディスコースをアップグレードしたと思っていたのですが、もしかしたらUbuntuサーバーの方をアップグレードしていたのかもしれません。よくわかりません。

この件について、さらに多くのトピックを読むと有益かもしれません。Documentation を検索するか、一般的な検索をすれば、知識のギャップを埋めるのに役立つ情報がたくさん見つかると思います。学べる基本的なアドバイスが豊富にあります。:+1:

「いいね!」 2

なるほど、学ぶことはたくさんありますね。

「いいね!」 2

再構築でアプリを再構築できることに気づきませんでした。

こちらが公式ガイドです:

ウェブサイトの実行(Unicornの数は少ないですが)と同時にビルドを実行するのはメモリを大量に消費するためですか?

サーバー(3 VCPU、4GB)で試してみました。

オンライン:

アップグレード前の2.21 → メモリを解放するため1.7 → ビルド中のピーク3.5(GB)

スワップも約200MB増加し、ピークは約800MBになりました。

コマンドライン(上記直後なので直接比較はできません)

アップグレード前の1.7 → 約250MBに低下! → アセットコンパイル中にピーク3.25まで上昇しますが、全体的にははるかに低いです。

プロセスのほとんどの間、スワップ使用量は非常に低かったです。

注意:htopで観測されたすべての数値は不正確である可能性があり、グラフ化するのがおそらく最善です。

オフラインでの再ビルドが「ピーク」になることに驚きました。アセットの事前コンパイルは間違いなく多くのメモリを使用します。おそらく、VCPUが多いほど、並列で実行される可能性があるため、より多くのメモリを使用するのではないでしょうか?

私の場合はピークの違いがわずかだったことにも驚きましたが、スワップ使用量は大幅に少なく、全体的にメモリ使用量はオフラインでの再ビルドの方がはるかに少なく、プロセスの95%の間は数百MBにとどまりましたが、オンラインでのアップグレードは最低でも1.7GBでした。

「いいね!」 2

その通りだと思います。そこには疑問符は不要ですね!

では、アプリを再構築すると、最新バージョンに自動的に更新されるということでしょうか?

以前のバージョンの Discourse を実行し続けるためのサポートされている方法またはサポートされていない方法はありますか、それとも以前のバージョンの新規インストールが必要ですか?

いいえ、しかし stable に変更することで遅くすることができます。

残念ながら、今回はもう手遅れです。後戻りはできません。

わかりました。開発者/ベータ版ではなく、安定版でテスト済みのアップデートのみにその安定設定を変更したい場合があります。その方法を調べています。

「いいね!」 1