皆さん、こんにちは。ご協力をお願いします!
どなたか以前にこのような経験をされた方はいらっしゃいますか?
./launcher rebuild app を実行すると、この地点まで到達し、そこでハングしてしまいます。
今、何か処理はしていますが、非常に遅いです。3年間、セルフインストールしたDigitalOceanドロップレットでフォーラムを運営してきましたが、これは初めてのことで、多くのダウンタイムを引き起こしています。これをスムーズにする方法はありますか?フォーラムの画像に関連しているのでしょうか?
Falco
(Falco)
2023 年 12 月 4 日午後 2:04
2
別のSSHセッションを開いて、どのマイグレーションが問題を引き起こしているか見つけられますか?
ps aux | grep postgres のようなコマンドで開始部分を確認できるはずです。
「いいね!」 1
私はLinuxの専門家ではありません(率直に言って、アマチュアでもありません)が、やってみます。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2023 年 12 月 4 日午後 4:01
4
メモリ不足が原因だと思われます。以下のコマンドを試してみてください。
free -h
また、以下のコマンドも試してみてください。
du -hs /var/discourse/shared/standalone/*
「いいね!」 1
メモリ(RAM)かディスク容量か?
どちらも十分にあるはずだと思います。Dropletは次のとおりです。8 GB メモリ / 4 Intel vCPU / 160 GB ディスク + 200 GB / Ubuntu 18.04.3 (LTS) x64
このdb:migrateがまだ実行中に、別のSSHセッションを開いてそれらを実行しても「安全」ですか?
RGJ
(Richard - Communiteq)
2023 年 12 月 4 日午後 4:14
6
Jon Clarke:
Ubuntu 18.04.3 (LTS) x64
もし私なら、まだサポートがアクティブなOSを搭載した新しいVPSを取得することから始めます。
はい。
わかりました。私はLinuxの専門家ではないことをご理解ください。あなたの投稿は、現在のUbuntuのビルドが非常に古いことを示唆していますか?
RGJ
(Richard - Communiteq)
2023 年 12 月 4 日午後 4:22
8
はい、OSは2018年4月のもので、5年間サポートされていましたので、6か月以上前に終了しています。
「いいね!」 2
情報ありがとうございます。
自分のベストを尽くしているアマチュアであることを率直に認める者として、次に何をすべきか、何かお勧めのことはありますか?
db:migrate は失敗しました。メッセージは次のとおりです。
client_loop: send disconnect: Connection reset
再度ログインすると、おっしゃる通りです。
新しいリリース「20.04.6 LTS」が利用可能です。
「do-release-upgrade」を実行してアップグレードしてください。
現在フォーラムがダウンしていることを考慮すると、フォーラムの修正に取り組む前に、アップグレードを実行しても安全でしょうか?それとも、まずフォーラムをオンラインに戻そうとすべきでしょうか?
RGJ
(Richard - Communiteq)
2023 年 12 月 4 日午後 4:48
10
それはSSHエラーですね…
アップグレード前にバックアップを取りましたか?もし取っていれば、Ubuntu 22で新しいサーバーをセットアップし、Discourseをインストールしてバックアップを復元するのが最も簡単でしょう。
「いいね!」 1
残念ながら、管理者の1人がサイトのアップグレードボタンを押してしまい、それが失敗してすべてが壊れてしまったようです。
最後のバックアップは昨日取られたものなので、それほど悪くはありません。
既存のサーバーへのアップグレードは、既存のインストールをすべて消去してしまうということでしょうか?
(@RGJさん 、忍耐強く対応していただきありがとうございます。)
RGJ
(Richard - Communiteq)
2023 年 12 月 4 日午後 5:21
12
判断が難しいですが、問題が発生しているため、試すのは避けた方が良いでしょう。少なくとも、バックアップが安全な場所に保存されていることを確認する前には。
pfaffman
(Jay Pfaffman)
2023 年 12 月 4 日午後 6:06
13
新しい仮想マシンを起動し、コンテナを停止して(いずれにせよ実行されていないようです)、それからすべてを新しいサーバーに rsync して、そこで再度試すという十分な可能性があります。これにより、データを失うことなく、おそらく復旧できるでしょう。
すべてがとてもシンプルに聞こえますが、私はここで自分の能力を超えていると感じています。現在、DigitalOceanのドロップレットで実行されています。新しいVMを起動するというのは、意味深な言葉ですか?同じドロップレットに?新しいドロップレットに?
RGJ
(Richard - Communiteq)
2023 年 12 月 4 日午後 7:46
15
VM は、DigitalOcean が Droplet と呼ぶものの一般的な用語です。
私のプロフィールをご覧になり、マネージドホスティングをご検討いただくのが良いかもしれません
「いいね!」 1
pfaffman
(Jay Pfaffman)
2023 年 12 月 4 日午後 10:51
16
ystemd+ 7660 0.0 0.3 352060 28284 ? S 22:31 0:00 /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
systemd+ 7667 0.0 0.1 352588 9628 ? Ss 22:31 0:00 postgres: 13/main: checkpointer
systemd+ 7668 0.3 0.9 352060 78796 ? Ss 22:31 0:03 postgres: 13/main: background writer
systemd+ 7669 0.0 0.1 352060 13696 ? Ss 22:31 0:00 postgres: 13/main: walwriter
systemd+ 7670 0.0 0.1 352728 11892 ? Ss 22:31 0:00 postgres: 13/main: autovacuum launcher
systemd+ 7671 0.0 0.0 67996 5320 ? Ss 22:31 0:00 postgres: 13/main: stats collector
systemd+ 7672 0.0 0.0 352612 6640 ? Ss 22:31 0:00 postgres: 13/main: logical replication launcher
systemd+ 10900 82.0 3.8 487164 317728 ? Rs 22:33 10:42 postgres: 13/main: discourse discourse [local] DELETE
systemd+ 10901 0.0 0.1 353432 13804 ? Ss 22:33 0:00 postgres: 13/main: discourse discourse [local] idle
htop によると、CPU を 100% 消費しているのは discourse [local] delete です。ドロップレットは 8GB の RAM を搭載しており、現在使用されているのは 1GB 未満です(バッファは除く)。
OS は最新ではありませんが、これは非常に奇妙に思えます。RAM もディスクも十分あり、その postgres delete タスクは 12 分以上実行されています。投稿は 60 万未満、ユーザーは 4 千未満なので、データベースはそれほど大きくありません。ああ、待ってください。postgres_data ディレクトリは 28GB です。
VACUUM VERBOSE ANALYZE; を実行しました。
これを実行しました:
discourse=# SELECT checkpoints_timed, checkpoints_req FROM pg_stat_bgwriter;
checkpoints_timed | checkpoints_req
-------------------+-----------------
6 | 20
現在、同時にインデックスを再構築しようとしています。バキュームとインデックスの再構築が役立つかもしれません。
ジェイさん、ありがとうございます。何か私にできることがあれば教えてください。
Falco
(Falco)
2023 年 12 月 4 日午後 11:39
18
長時間実行されているクエリの SQL 全体を共有してください。
pfaffman
(Jay Pfaffman)
2023 年 12 月 5 日午前 12:02
19
それはどこで見つけられますか?
マイグレーションでログが出力されていません。リビルドの最後の行は次のとおりです。
I, [2023-12-04T22:33:33.759401 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
再起動したばかりのものの完全なログを作成しています。
Falco
(Falco)
2023 年 12 月 5 日午前 12:03
20
コンテナに入り、postgresユーザーに切り替えて、psqlを実行し、以下を実行します。
SELECT pid, age(clock_timestamp(), query_start), usename, query
FROM pg_stat_activity
WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%'
ORDER BY query_start desc;