様々なルートで500内部サーバーエラーが発生

こんにちは、

再発する 500 Internal Server Error のデバッグを試みています。
まず環境設定についてお伝えします(Docker を使った推奨されたデプロイ方法ではないことは承知しています):

  • discourse 2.3.8
  • ruby 2.7.2 (snap 使用)
  • redis-server 5:4.0.9-1ubuntu0.2 (Ubuntu パッケージ)
  • postgresql 10.10 (別ホスト上)

config/environments/production.rb ファイルを編集して以下を設定しました。

config.log_level = :debug

200 ステータスと混在して発生するエラーのサンプルは以下のリンクにあります(投稿でリンクを 2 つしか貼れないため、残りのログもこちらにまとめています):Ubuntu Pastebin

特定の種類のリクエストが 500 エラーを引き起こしているか確認しようとしましたが、上記の過去ログにもある通り、何らかのパターンが存在するようです。

現時点では、これ以上デバッグする方法が見つかりません。
これはバグであるとは確信できず、残念ながら再現方法もわかりません。これらのエラーは 200 ステータスの合間に一日中ランダムに発生します。ロックや競合の問題かもしれませんが、より詳細なログがない限り、問題の所在を特定することはできません。

もしこれが原因である場合のために、現在プロセスで使われている制限値を以下に示します:Ubuntu Pastebin

これ以上デバッグするためのアドバイスがあれば、大変助かります。

よろしくお願いいたします。

Discourse 2.3.8 は非常に古く、Ruby 2.7.2 などの最新の Ruby では動作しません。

Discourse 2.5.6、2.6、2.7 は Ruby 2.7.2 と互換性があることが確認されています。

こんにちは、ラファエルさん。

ご回答ありがとうございます。私たちは「近い将来」確実にアップグレードし、サポートされているデプロイ方法を採用する予定です。

主に、config/environments/production.rb ファイルを変更すること以外で、デバッグメッセージを増やす方法を探していました。

logster(https://meta.discourse.org/t/discourse-logging-improvements/16783)を利用できることはわかりましたが、私たちのケースでは役に立つものが提供されていません(ここには秒数が表示されず、これが私の 500 エラーに関連するものかどうかを確認できません)。また、ruby と discourse のバージョンの不一致に起因すると思われるエラーが多すぎます。

もう少し調べてみますが、「近い将来」よりも「より早く」アップグレードを進めるつもりです :)。

ありがとうございました!