エラーログで、以下のエラーが断続的に発生しています。これにより、サイトが復旧するまでの 15〜30 秒間アクセスできなくなります。
Info エラーメッセージ:
PG::ConnectionBad (FATAL: the database system is in recovery mode) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize’
Env エラーメッセージ:
これらのログを見て気づいた非常に奇妙な点は、/var/www/… のフォルダを検索しているように見えることです。しかし、そのフォルダはサーバーには存在しません。存在すべきでしょうか?ご助力いただければ幸いです。
pfaffman
(Jay Pfaffman)
2020 年 4 月 2 日午後 4:28
2
データベースが破損していれば、サイトも必然的に破損します。その原因を特定する必要があります。最も一般的な原因は、RAM不足とディスク容量不足です。私の推測ではRAMの問題でしょう。RAMはどれくらいありますか?free -h の出力結果は何ですか?
それはコンテナ内のパスです。./launcher enter app を実行すると、そこに存在していることが確認できます。
おっしゃる通りだと思います。free -h の出力は以下の通りです。
131M の空き容量は、私にはあまり多くないように思えます。
pfaffman
(Jay Pfaffman)
2020 年 4 月 2 日午後 4:33
4
さて、646M のメモリが利用可能です。4GB なら通常はスワップの使用は推奨されません。データベースのサイズはどれくらいですか?トラフィック量はどの程度ですか?サーバー上で Discourse 以外に何か他のサービスが動作していますか?
サーバー上では Discourse 以外は何も実行されていません。
サイズを確認するために以下のコマンドを実行しました。
./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));
出力結果は 4650 MB(1 行)でした。
トラフィックについては、昨日のページビュー数は 1,200、過去 1 週間で 12,400 です。過去 1 週間のユーザー数は約 160 人、同時接続ユーザー数は約 80 人です。
Stephen
(Stephen)
2020 年 4 月 2 日午後 4:54
6
空きディスクがある場合は、スワップ領域を追加して一時的な余裕を持たせましょう。
そこにスワップ領域を1GB追加しました。今夜の混雑時にどうなるか見てみましょう。
本当に助かりました。1GB のスワップ領域を追加したところ、クラッシュの問題がすべて解決しました。DB の問題ではなく、RAM の問題だったと知って本当に安心しています。週末にサーバーの RAM を増設しようと思います。このスレッドで助けをくれた皆さん、本当にありがとうございます!
pfaffman
(Jay Pfaffman)
2020 年 4 月 3 日午後 9:15
9
LlamaSensei:
今週末にサーバーのRAM容量を増設します。
増設後、discourse-setupを再実行してメモリパラメータをリセットしてください。
正直なところ、確信はありません。以前は、ハードウェアを変更した後に再構築とサーバーの再起動を行いました。再起動後であれば、Discourse がシステムの変更を認識したはずです。
スワップファイルのインストール後、4 GB を超える「メモリ」が使用されていた時期があり、これは最も混雑する時間帯と一致し、サーバーがクラッシュした時期とも重なっていました。そのため、これが問題だったことは間違いありません。本日アップグレードを行い、現在はサイトが非常にスムーズに動作しています。
pfaffman
(Jay Pfaffman)
2020 年 4 月 5 日午後 5:16
12
しかし、実際には反映されていません。データベースが使用できる RAM の量などを制御する設定は、app.yml に埋め込まれています。これらは手動で編集するか、discourse-setup を再実行することで変更できます。
discourse-setup 関数を本日再実行しました。それまでその存在に気づいていなかったためです。私にとっては新しい情報でした。