Nginxの問題:アプリ停止・起動時に「502 Bad Gateway」が発生

./launcher stop app を実行してから ./launcher start app を実行すると、サイトに 502 Bad Gateway と表示されます。原因がわかりません。再構築も試しましたが、うまくいきませんでした。

修正方法を教えてください。

リビルドログを共有していただけますか?

root@amsaal:/var/discourse# ./launcher logs app
x86_64 arch detected.
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
run-parts: executing /etc/runit/1.d/cleanup-pids
Cleaning stale PID files
run-parts: executing /etc/runit/1.d/copy-env
run-parts: executing /etc/runit/1.d/letsencrypt
[Mon 15 Apr 2024 10:12:06 AM UTC] ドメインは変更されていません。
[Mon 15 Apr 2024 10:12:06 AM UTC] スキップ、次の更新時刻: 2024-06-12T11:28:31Z
[Mon 15 Apr 2024 10:12:06 AM UTC] 更新を強制するには '--force' を追加してください。
[Mon 15 Apr 2024 10:12:07 AM UTC] キーをインストール中: /shared/ssl/amsaal.net.key
[Mon 15 Apr 2024 10:12:07 AM UTC] フルチェーンをインストール中: /shared/ssl/amsaal.net.cer
[Mon 15 Apr 2024 10:12:07 AM UTC] リロードコマンドを実行: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Mon 15 Apr 2024 10:12:07 AM UTC] リロードエラー:
[Mon 15 Apr 2024 10:12:07 AM UTC] ドメインは変更されていません。
[Mon 15 Apr 2024 10:12:07 AM UTC] スキップ、次の更新時刻: 2024-06-12T11:28:38Z
[Mon 15 Apr 2024 10:12:07 AM UTC] 更新を強制するには '--force' を追加してください。
[Mon 15 Apr 2024 10:12:08 AM UTC] キーをインストール中: /shared/ssl/amsaal.net_ecc.key
[Mon 15 Apr 2024 10:12:08 AM UTC] フルチェーンをインストール中: /shared/ssl/amsaal.net_ecc.cer
[Mon 15 Apr 2024 10:12:08 AM UTC] リロードコマンドを実行: sv reload nginx
warning: nginx: unable to open supervise/ok: file does not exist
[Mon 15 Apr 2024 10:12:08 AM UTC] リロードエラー:
Started runsvdir, PID is 537
ok: run: redis: (pid 550) 0s
ok: run: postgres: (pid 551) 0s
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in /etc/nginx/conf.d/discourse.conf:60
supervisor pid: 545 unicorn pid: 577
root@amsaal:/var/discourse#

それは私の意図するところではありませんでした。./launcher rebuild app を実行し、その出力を共有していただけますか?(また、トピックを読みやすくするために、出力をコードフェンスに入れてください)

このようにすれば、stdout をファイルに記録するため、ユーザーが再構築するのが少し簡単になります。

./launcher rebuild app >> rebuild.log
「いいね!」 1

再構築ごとに異なるファイルが必要な場合:

./launcher rebuild app > "rebuild-$(date -Imin).log" 2>&1

コンテナ起動後、サービス提供が開始されるまで1〜2分かかります。ウェブサイトにアクセスする前に数分待ってみましたか?

「いいね!」 1
x86_64 アーキテクチャを検出しました。
ランチャーを最新の状態に保ちます
ランチャーは最新の状態です
古いコンテナを停止しています
app
2.0.20231218-0429: discourse/base からプルしています
ダイジェスト: sha256:468f70b9bb4c6d0c6c2bbb3efc1a5e12d145eae57bdb6946b7fe5558beb52dc1
ステータス: イメージは discourse/base:2.0.20231218-0429 まで最新です
docker.io/discourse/base:2.0.20231218-0429
/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
97:C 2024年4月15日 18:52:04.329 # oO0OoO0OoO0Oo Redis が起動しています oO0OoO0OoO0Oo
97:C 2024年4月15日 18:52:04.329 # Redis バージョン=7.0.7, ビット=64, コミット=00000000, 変更=0, pid=97, 起動したばかり
97:C 2024年4月15日 18:52:04.330 # 設定がロードされました
97:M 2024年4月15日 18:52:04.331 * モノトニッククロック: POSIX clock_gettime
97:M 2024年4月15日 18:52:04.336 * 実行モード=standalone, ポート=6379。
97:M 2024年4月15日 18:52:04.336 # サーバーが初期化されました
97:M 2024年4月15日 18:52:04.337 * バージョン 7.0.7 で生成された RDB をロードしています
97:M 2024年4月15日 18:52:04.337 * RDB の経過時間 31 秒
97:M 2024年4月15日 18:52:04.337 * RDB 作成時のメモリ使用量 23.25 Mb
97:M 2024年4月15日 18:52:04.451 * RDB のロードが完了しました。キーがロードされました: 1351、キーが期限切れました: 5。
97:M 2024年4月15日 18:52:04.461 * ディスクから DB がロードされました: 0.124 秒
97:M 2024年4月15日 18:52:04.461 * 接続を受け入れる準備ができました
3507:C 2024年4月15日 18:58:01.238 # oO0OoO0OoO0Oo Redis が起動しています oO0OoO0OoO0Oo
3507:C 2024年4月15日 18:58:01.238 # Redis バージョン=7.0.7, ビット=64, コミット=00000000, 変更=0, pid=3507, 起動したばかり
3507:C 2024年4月15日 18:58:01.238 # 設定がロードされました
3507:M 2024年4月15日 18:58:01.239 * モノトニッククロック: POSIX clock_gettime
3507:M 2024年4月15日 18:58:01.240 # 警告: サーバー TCP リスニングソケット *:6379 を作成できませんでした: bind: アドレスは既に使用されています
3507:M 2024年4月15日 18:58:01.240 # ポート 6379 (TCP) でのリスニングに失敗しました。中止します。
97:M 2024年4月15日 18:58:27.220 * 300 秒で 100 件の変更。保存中...
97:M 2024年4月15日 18:58:27.223 * バックグラウンドで pid 3555 によって保存が開始されました
3555:C 2024年4月15日 18:58:30.967 * ディスクに DB が保存されました
3555:C 2024年4月15日 18:58:30.969 * RDB のための Fork CoW: 現在 1 MB、ピーク 1 MB、平均 1 MB
97:M 2024年4月15日 18:58:31.058 * バックグラウンド保存が正常に終了しました
97:M 2024年4月15日 19:03:32.047 * 300 秒で 100 件の変更。保存中...
97:M 2024年4月15日 19:03:32.063 * バックグラウンドで pid 3634 によって保存が開始されました
3634:C 2024年4月15日 19:03:37.774 * ディスクに DB が保存されました
3634:C 2024年4月15日 19:03:37.777 * RDB のための Fork CoW: 現在 1 MB、ピーク 1 MB、平均 1 MB
97:M 2024年4月15日 19:03:37.828 * バックグラウンド保存が正常に終了しました
97:signal-handler (1713208309) SIGTERM を受信し、シャットダウンをスケジュールしました...
97:M 2024年4月15日 19:11:49.130 # ユーザーがシャットダウンをリクエストしました...
97:M 2024年4月15日 19:11:49.131 * 終了前に最終 RDB スナップショットを保存しています。
97:M 2024年4月15日 19:11:52.592 * ディスクに DB が保存されました
97:M 2024年4月15日 19:11:52.593 # Redis は終了する準備ができました。さようなら...
sha256:066d1fc0bf450b6f9043e13960cafef6b7751d92f0d89cc4e0865208293ce2e2
58661874f252e2e9dac3955608dbbe90e60f020a4d307d2818e7f991d39f8010
古いコンテナを削除しています
app

ea032a7acab7743f4ef8de3b9a536da0dbbf36b8c9dd5b2a9add0cfb01286e5d

はい、再構築プロセスが完了してから30秒後、サイトが機能せず、502ゲートウェイエラーが発生しました。その後、/launch restart app with launch start app を実行したところ、機能するようになりました。

何か原因があるのかもしれません。

それは…不完全なログのように感じます。そこで本当に終わりですか、それとも単に長い間一時停止しているだけですか?後者であれば、より多くのRAM/スワップが必要になる可能性があります。

60秒待ってみてください。

「いいね!」 1

一時停止か、あるいは再構築完了までに30分近くかかる可能性があります。RAMが2GBしかないことが原因で遅くなっているのかもしれませんが、現時点ではメモリの問題はありません。通常はスペックに応じて1~2分で終わるはずなのに、ただ遅いだけです。

私のVPSのスペックは以下の通りです。

CPU: AMD EPYC 7551P 32コア プロセッサ、2000 MHz
RAM: 2 GB
SSD: 60 GB

コンテナが実行されていなければ502エラーは発生しません。もう少し待てばサイトは機能し始めたでしょう。

停止と開始が何かをしたわけではなく、再起動したときに長く待っただけです。

コンテナが起動している間は、一時的に502エラーが発生することが予想されます。問題はありません。

「いいね!」 1

正直なところ、それはそれほど珍しいことではありません。再構築は速くありません、特に…

…メモリがあまりない場合。

一般的に、最近のDiscourseでは、合計メモリ(RAMとスワップ)は少なくとも4GBが推奨されます。

Discourse を管理インターフェイスから更新している際に、互換性のない問題に関する警告が表示されます。

warning Resolution field "unset-value@2.0.1" is incompatible with requested version "unset-value@^1.0.0"
[3/5] Fetching packages...
warning Pattern ["wrap-ansi-cjs@npm:wrap-ansi@^7.0.0"] is trying to unpack in the same destination "/home/discourse/.cache/yarn/v6/npm-wrap-ansi-cjs-7.0.0-67e145cff510a6a6984bdf1152911d69d2eb9e43-integrity/node_modules/wrap-ansi-cjs" as pattern ["wrap-ansi@^7.0.0"]. This could result in non-deterministic behavior, skipping.
[4/5] Linking dependencies...
warning "@discourse/lint-configs > eslint-plugin-ember > ember-eslint-parser@0.3.8" has unmet peer dependency "@typescript-eslint/parser@^6.15.0".
warning "> @glint/environment-ember-loose@1.4.0" has unmet peer dependency "@glimmer/component@^1.1.2".
warning "> discourse-markdown-it@1.0.0" has unmet peer dependency "xss@*".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/aws-s3@3.0.6" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/aws-s3-multipart@3.1.3" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/xhr-upload@3.1.1" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse-plugins > ember-this-fallback@0.4.0" has unmet peer dependency "ember-source@^3.28.11 || ^4.0.0".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > admin > ember-source > router_js@8.0.3" has unmet peer dependency "rsvp@^4.8.5".
warning "workspace-aggregator-e69f39ff-3f17-47f3-9e20-638bb7914a45 > discourse > @uppy/aws-s3 > @uppy/xhr-upload@3.3.0" has incorrect peer dependency "@uppy/core@^3.2.1".

無視しても問題ありません。Discourse の再構築を妨げることはありません。