VersionCheck ジョブの失敗時の動作

申し訳ありませんが、これが適切なカテゴリではないかもしれません。

Discourseを評価しており、私の環境でVersionCheck Jobが失敗しています。

sidekiq内に失敗したジョブが積み重なっており、おそらくデフォルトの25回の再試行後に「dead」セクションに移動するでしょう(https://www.rubydoc.info/gems/sidekiq/Sidekiq/JobRetry に従います)。

失敗の原因を調査する必要があることはわかっていますが、ここでのポイントは次のとおりです。これらのジョブをそこに維持することは理にかなっていますか?失敗したバージョンチェックを単純に破棄して、次のジョブ実行を待つ方が良いのではないでしょうか?

現時点で、再試行を待っているVersionCheckジョブが80以上あり、私にはリソースの無駄のように思えます(おそらくわずかですが、それでも無駄です)。

確認したところ、app/jobs/scheduled/version_check.rbsidekiq_options retry: false を追加すると、これが解決するはずです。

何か見落としていることはありますか?

どのようにインストールしましたか?ネットワークの問題がある可能性はありますか?RAMは?

おっしゃる通りかもしれませんが、今のところあなただけが報告しているので、最適化リストには載っていません。一度試して失敗させるだけで良いというのは、私の考えでは理にかなっています。

最後にアップグレードしたのはいつですか?

数週間前(10月末頃)にバージョンチェックジョブで問題が発生しましたが、現在は修正されています。ターミナル(./launcher rebuild app)でアップグレードすれば、問題ないはずです。

「いいね!」 1

EC2インスタンス内で標準のDockerインストールを使用しています。

企業環境にいるため、インスタンスとインターネットの間には多くのファイアウォール、プロキシ、セキュリティスキャナーがあります。ログには「Job exception: Connection reset by peer - SSL_connect (Errno::ECONNRESET)」というエラーが表示されるため、おそらく何らかのファイアウォールがリクエストを拒否しているのでしょう…まだ、Discourseがどのようにバージョンチェックを行っているのかを理解しようとしているところなので、手動で再現して詳細を取得できるようにします。

これは完全に理解できます。過去にGitLabで作業した際に、Sidekiqキュー全体がパフォーマンス低下やその他の奇妙な動作を引き起こす多くの問題を目にしてきたため、このようなものを見るたびに警報が鳴ります。:smile:

「いいね!」 1

私は2.8.0.beta9 (959923d3cf) を使用しています。

はい…ターミナルまたはGUI経由でのアップグレードは正常に機能しています(毎週実行しています)。この場合の唯一の問題は、メインの管理者画面に最新バージョンが表示されず、常に古いバージョンを実行していると表示されることです。

その場合は、コマンドラインアップグレードを実行する必要があります。

Discourse は、バージョンアップの確認、ユーザーアバターの取得、リモート画像のローカルストレージへのダウンロード、一般的なワンボクシングなどのタスクのためにインターネットに接続します。インスタンスがインターネットから切り離されている場合、確かにいくつかの問題が発生します。

「いいね!」 1

はい!解決策が見つかるまで毎週実行しています。

このため、ワンボクシングは諦めなければなりませんでした。今のところ、このサーバーに完全なインターネットアクセスを許可することはできません。
github.com/* はすでに許可されていますが、おそらくこのバージョンチェックジョブは別のURLを使用してこれを行っています。

「いいね!」 1

私がやるなら、SiteSetting.version_checks をオフにして、discourse_docker プラグインを削除し、コマンドラインでアップグレードします。

しかし、ここでは https://api.discourse.org/api を開くことができるなら、おそらく大丈夫でしょう。

「いいね!」 1

情報ありがとうございます! https://api.discourse.org/api/version_check へのアクセスを許可したところ、うまくいきました。

「いいね!」 1