Discourseが動作しなくなった - CPU/RAM負荷の問題?

こんにちは、皆さん。

現在、当フォーラムで発生している問題の解決に役立つ方がいらっしゃらないか、お願いしたいと考えています。
https://forum.combustionpunks.co.uk
これは長い話になりますが、問題解決に役立つ可能性のある情報をすべて提供したいので、お付き合いください。この過程で、Ubuntu に関する経験がほとんどないことがお分かりいただけるかと思います :frowning:

これまでずっとすべてが順調に進んでいました :smiley: が、昨日の夕方までです。
私たちは少しのリブランディング(ロゴの更新など)を行っており、昨日は管理パネルで新しいロゴをアップロードしていました。また、バージョンが数世代遅れていることに気づき、以下の手順に従って手動で更新を実行しました。

例:
cd /var/discourse
git pull
./launcher rebuild app

更新は正常に完了し、ロゴもアップロードされて表示されました。いくつかのテーマを試した後、元のテーマに戻り、その後、フォーラムに関連する社交の場へ出かけました……はい、友人たちとパブで食事をしに行きました。

約30分後、外出先でフォーラムがオフラインになっていることに気づきました。少しパニックになりましたが、Digital Ocean に問題が発生していることに気づき、少し安心しました。

約2時間後に戻ると、Digital Ocean の問題は解決していましたが、フォーラムはまだオフラインのまま……問題ありません。ドロレットを再起動したところ、すべて正常に復旧しました……しかし、約30分後、再びオフラインになりました。

次に、他の更新をクリアした方が良いと考え、docker を以下のコマンドで更新しようと試みました。
wget -qO- https://get.docker.com/ | sh
しかし、これはほとんど効果がありませんでした。
アプリを再構築しました:./launcher rebuild app
アプリを再構築する際に「docker version 17.05.0-ce は非推奨です」と表示され、docker version を実行しても 17.05.0-ce と報告されているため、更新されていないと考えています。

その後、フォーラムがオフラインになる直前に、以下のようなメッセージが表示されていたことに気づきました:
Out of memory: kill process (convert) or sacrifice child
Out of memory: kill process (ruby) or sacrifice child

Htop を実行しました。
sidekiq のインスタンスが多数あり、一度にリビルドするスレッド数を減らすという投稿を見つけました。80から2に減らしましたが、問題は続きました。

var/www/discourse/public/uploads/default/original/ 内の JPEG に対して convert が実行されているインスタンスが見つかりました(どの画像に対して実行されているかを確認するために、文字列の残りを表示する方法がわかりません)。

CPU 使用率は 100% で、Ruby var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E が実行されています。

OS を更新し、現在は Ubuntu 18.04 を実行しています。
Docker はまだ 17.05.0-ce のままです。

ドロレットを 2GB 1vCPU 50GB(10ドル)から 3GB 1vCPU 50GB(15ドル)にサイズ変更しましたが、問題は続いています。

ドロレットの再起動や Discourse の再構築を行っても、10〜30分程度しか正常に動作せず、再びオフラインになってしまいます。

この問題に関するご助言をいただければ非常に幸いです。何卒よろしくお願い申し上げます。
マット

以前、画像の圧縮方法に変更がありました。おそらく画像の処理に負荷がかかっている状態です。すぐに落ち着くはずですが、画像が多い場合はもう少し時間がかかる可能性があります。以下のコマンドを実行して、現在実行中のプロセスを確認できます。

  ps -ax

または

 top

top を終了するには、q キーを押してください。

@pfaffman さん、ありがとうございます。もう少し様子を見て、処理が進んで状況が落ち着くか確認します。

推奨するトラブルシューティングの大部分を完了され、よくやられました。フォラムには非常に多くの画像がありますか?

機会があれば、後ほど Docker を更新することをお勧めします。

更新を行った後は、必ず再起動してください。警告は表示されず、昨日私が更新を行った際は、再起動を思いつくまでDockerが動作しませんでした。

みなさん、どうもありがとうございます。

問題は依然として発生しています :frowning: ruby /vazr/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E が現在 98% の CPU を使用しており、フォーラムは利用できません。

画像の数は、ひどいほど多いとは言い切れませんが、かなり多いです。ただし、当フォーラムは巨大なものではありません。df コマンドでは 50GB のうち 80% が使用されていると表示され、Discourse の管理パネルではアップロード量が 5.7GB と表示されています。

試した Docker の更新コマンドは特に何も行われなかったようです。Ubuntu 18 でのインストール方法については見つけましたが、更新方法については見つかりませんでした。インストール手順に従うべきでしょうか?

今朝の Droplet の再起動前には変換プロセスは表示されていませんでしたが、再起動後、5 つの変換プロセスが CPU と RAM の約 50% を使用しています。残りは Ruby や Sidekiq プロセスが断続的にリソースを使用しており、プロセッサと RAM は常に最大容量まで使用されています。

変換プロセスは、メモリ不足のために引き続き終了されています。

まだ処理待ちのキューがあるのでしょうか?さらに Droplet をリサイズすることでそのキューを処理できるでしょうか?フォーラムは現在、30 分間しかオンラインを維持できず、それより短いことも多いです。

これの解決には至りませんでした。画像のリサイズを行っている可能性があるので、ドロプレットのサイズを上げて試してみます。

サイズ変更後、discourse-setup を実行してメモリパラメータを調整し、再構築(または破棄して再起動)してください。