突然のブートストラップ失敗

何も意図的に変更したわけではありませんが、本日、git pull を実行して web_only.yml のブートストラップを試みたところ、ブートストラッププロセス開始から約 90 秒後にエラーが発生しました。診断の助けになるようであれば、エラーの最後の数行を以下に貼り付けます。

/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:348:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:511:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
I, [2022-12-29T10:28:07.806753 #1]  INFO -- : gem install geocoder -v 1.4.4 -i /var/www/discourse/plugins/discourse-locations/gems/3.1.3 --no-document --ignore-dependencies --no-user-install
Successfully installed geocoder-1.4.4
1 gem installed


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 1066 exit 1&gt;
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
9b7ac0c88b42b2aa1eccb9ef291527f4afd8b71861669af66ab79dee5ed82a45

以前は成功していた同じ yml ファイルのブートストラップが、なぜ許可されないのか理解できません。私のサイト は、問題なく動作しています。

Discourse-Doctor でも「error」という単語は見つかりませんでした(「error」という単語でしか検索できませんでした)。専門家ではありませんが。

locations プラグインを削除してみてください。

「いいね!」 4

うまくいきました。ウェブコンテナを完全に正常にブートストラップできるようになりました。!!! 何度もありがとうございます。


しかし、すべての投稿やユーザーの以前のマッピング/場所がなくなってしまいました。

他に代替手段はありますか?プラグイントピックについてもっと検索できるし、すべきだし、するつもりであることはわかっています。しかし、簡単に言うと、この問題に対する解決策はありますか?

「いいね!」 1

時間です。来週か再来週には修正されると思います。

「いいね!」 4

昨日、「location」プラグインを無効にした後、web_onlyコンテナを正常に再構築できましたが、今日はすべてのプラグインを一つずつ無効にしても、ブートストラップが失敗し続けています。

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 900 exit 137>
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 137
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2c5f01d5ca6b216e744e11547b121e64aac0ad5e37d64d2ec5e2f279fe766c6a

ただし、私のサイトは正常に動作しています。

この問題について、何かできることはありますか?何らかの方向性でご指導ください。

再構築はできませんが、アプリを起動することはできますか?

「いいね!」 1

はい、コンテナはすでに起動しており、ウェブサイトは動作しています。しかし、同じコンテナ(web_only)を再構築/ブートストラップしようとすると、エラーが発生します。昨日、同じ問題に直面したとき、「location」プラグインを無効にすることで同じものを正常にブートストラップできましたが、今日は何も変更せずに同じものが失敗しました。

「いいね!」 1

あなたのサイトは現在オフラインのようです。編集:いいえ、戻りました。ほとんどがヒンディー語で読めませんが。

念のため確認ですが、app.yml ファイルで有効になっているプラグインは 何も ないということでよろしいでしょうか?すべてコメントアウトまたは削除されていますか?

エラーコード137はメモリ不足です。

「いいね!」 5

これは問題でしょうか?
Discourseは(すべてのプラグインをオフにしても)現在4GB以上のメモリを必要としますか?
同じドロップレット/インスタンスで稼働している他の2つのwpressサイトは、ほとんど稼働していません。

8GBメモリのマシンにする以外に、簡単な解決策はありますか?

はい、空きメモリは400MBしかなく、これではDiscourseの再構築ができません。4〜5GBに増やすか、再構築前にフォーラムをシャットダウンしてから再度試してください。

400MBの空きメモリがアイドル時であると仮定します。再構築はシステムにかなりの負荷がかかり(私のサイトではProxmoxで確認しますが、しばらくオフラインになっています)、アイドル時よりも多くのメモリを必要とします。

すみません、よく意味が分かりませんでした。4〜5GB増やすということでしょうか?つまり、4GBから8GBまたは9GBにするということですか?

フォーラム(ウェブサイト)をシャットダウンするにはどうすればよいですか?
そして、メモリを増やした後でも、再構築する前にウェブサイトをダウンさせる必要があるということでしょうか?

ご指導ありがとうございます。

メモリを追加する前に、コマンドラインでこれを実行してみてください。
標準的なインストールを想定しています。/var/discourse ディレクトリにいることを確認してください。

./launcher stop app && ./launcher rebuild app && ./launcher start app

「いいね!」 1

おっしゃる通りです!

Ubuntuサーバーを再起動したところ、インスタンスで700〜800MBの空きRAMが確保できるようになり、ブートストラップが成功しました。目的のプラグインを有効にした後、別のBS/再構築が成功しなかった場合、コンテナを停止する必要がありました。

しかし、Discourseの新しいRAM要求量には驚いています。インスタンス/ドロップレットのコストは、RAMを4GBから8GBに増やすとほぼ倍増します。1日の訪問者が10人程度の非常に小規模なウェブサイトであるため、これは望ましくありません。以前は、Discourseの標準インストールで1〜2GBのRAMしか必要としませんでした。

何が問題だったのかを認識するのに役立てていただき、本当にありがとうございました。

「いいね!」 1

可能であれば、利用可能であれば8GBのマシンをお勧めします。2GBのマシンは小規模なフォーラム向けであり、あなたのフォーラムには多くのコンテンツがあるようです。

「いいね!」 1

現時点では訪問数が非常に少ない4GBのものを利用しています。将来的には8GB(6GBはありません)を検討する予定です。

ちなみに、Googleの記事の中には、空きメモリの量はあまり重要ではないと書かれているものもありました。これは、何もしていない無駄なメモリのようなものです。ユーザーはむしろ、「利用可能メモリ」を確認すべきであり、必要に応じて利用できるメモリのことです。私の場合は、利用可能メモリは1.4GBです。

もしよろしければ、この点についてもご指導いただければ幸いです。

「いいね!」 1

1.4GB空き容量があるのに、システムは何をしていますか?

「いいね!」 1

上記のスクリーンショット/記事が示すように、「利用可能」には「バッファメモリ」などが含まれており、必要に応じて「システム利用可能」となる場合があります。しかし、私はこれらの専門家ではありません。

そして、私はまだこれらを調査中です(繰り返しますが、私は専門家ではありません)。私の他の2つのWordPressウェブサイト、ほとんど休止状態だと思っているものは、これに関連している可能性があると推測しています。時間があるときにそれらをオフにして、パフォーマンスを比較してみます。

今のところ、リソースを増やして毎月ほぼ倍額を支払うことなく、再構築の問題は解決しました。あなたのおかげです。

「いいね!」 1

それは良い考えではありません。

また、スワップを設定することも良いでしょう。

スワップスペースを追加できます。再構築には多くのRAMが必要です。また、サーバーでDiscourse以外のものを実行しているため、最小限よりも多くのメモリが必要です。他のサイトにトラフィックがなくても、他のWebサーバーが実行されているだけでいくらかのメモリが使用されます。

「いいね!」 3