twuky
(tuckie)
2020 年 11 月 21 日午前 1:40
1
カテゴリや場所が異なる場合は、あらかじめお詫び申し上げます。
約 6 ヶ月前から DigitalOcean の VPS を通して Discourse サイトを運用しており、大きな問題はありませんでした。管理画面ではバージョン 2.5.0.beta4 と表示されています。しかし、昨晩以降、サイトの大部分のページコンテンツが読み込まれなくなったり、明らかに不自然なほど長い時間がかかったりするようになりました。例えば、ホーム画面や /admin には移動できますが、それらの実際のコンテンツ(投稿や管理画面のグラフ/その他のタブ)は表示されません。システムの状態を確認すると、CPU 使用率は 2% 前後でアイドル状態であり、トラフィックやディスク使用量も最小限です。ユーザー数は 10 名程度で、まだテスト・設定段階です。この状況では、このような挙動は非常に不自然に思われます。
現在インストールされているプラグインは、app.yml に記載されている通り docker_manager と discourse-signatures のみです。私は唯一の管理者ユーザーであるため、サイト設定に変更が加えられていないことも確認できます。
まず思い付いたのは、マシン自体を再起動することでしたが、git pull と ./launcher rebuild app を手動で実行して更新を試みることもしました。このプロセス中にエラーが発生しているかどうかを示す兆候が何かあるのかはわかりませんが、ビルドは完了し、その後サイトにはアクセスできるようになります。ただし、バージョンは引き続き 2.5.0.beta4 のままです。同様に、/admin/update ページにアクセスすると、最終的にタイムアウトしてしまいます。サイトは「機能的」と言えるため、この状況は非常に奇妙です。サイトの仕組みについて十分な知識がないため、本当に問題を特定することはできません。discourse-doctor を見つけて実行することはできましたが、それが何を実現するのか(正常にメールを送信するなど)はわかりません。
問題を示唆する可能性がある唯一の事柄として、昨晩、フォーラムから投稿への返信に関するメールが届きました。しかし、「最新投稿」カテゴリに移動すると(最終的に読み込まれた後)、その投稿が存在するようには見えません。最新投稿のトピック一覧には、そのユーザーが最後に投稿したという表示がないためです。どの投稿のコンテンツも読み込めないため、確実な確認はできません。つまり、データベースに何らかのエラーや不整合がある可能性もあります。そのような事象がどうしてサイトの大きな部分が読み込まれなくなる原因となるのか、あるいは追う価値があるのかはわかりません。
このような問題のトラブルシューティングをどこから始めるべきか、ご意見をお聞かせください。お時間を取って読んでいただき、ありがとうございます : )
こんにちは、tuckieさん!ようこそ!
どうやら、あなたは正しい手順を踏んでいるようです。
可能であれば、アップデートすることをお勧めします。最新バージョンからかなり遅れています。ただし、何かを失わないよう、必ず事前にバックアップを取得してください。
SSH でログインして、ストレージ不足になっていないか確認できますか?
df -h
いずれにせよ、ストレージは最初に確認すべき項目です。また、スペースを占有している古いコンテナを削除するには、以下のコマンドを実行するのが有効です。
./launcher cleanup app
その後、アプリを最新バージョンに再構築してみてください。今回は動作し、コンソールにエラーが表示されないか教えてください。
./launcher rebuild app
twuky
(tuckie)
2020 年 11 月 21 日午前 2:48
3
迅速な対応をありがとうございます。
/dev/vda1 にマウントされたドライブは、ルート(/)にマウントされており、約 7.9 GB の空き容量があります。Ubuntu 上の他のパーティションがどのように使用されているか、または Discourse の実行(これはコンテナ内ですよね?)にどう影響するかについては、あまり詳しくありませんが、残りはブートパーティションなどのようです。フォーラムにはテスト用に投稿が 30〜40 件程度しかなく、現時点では容量不足の危険性はなさそうです。クリーンアップにより、約 4 GB 追加で空き容量を確保できました。
アプリの再ビルドについては、実際に数回実行しています。プロセス中に明らかな警告メッセージは表示されませんが、完了時に「成功」といったメッセージも表示されません。エラーや警告の行がどこにあるか分からないためです。古いコンテナを削除し、Docker コンテナを実行すると終了します。先ほど再度実行しましたが、サイトに接続すると「更新が利用可能」と表示されるものの、現在使用しているバージョン(2.5.0.beta4)と更新先のバージョンを報告するのに非常に長い時間がかかります。
問題の一部は、レスポンスの遅延や読み込み失敗により、管理ツール自体が実質的に使えない点にあります。例えば、バックアップタブに移動すると、読み込みアニメーションが無限に表示され続けます。興味本位でバックアップタブのコンソールを開いてみると、ブラウザは JavaScript ファイルの取得を試みており、すべてが順番にゆっくりと失敗しているようです。
もし SSH を通じてバックアップを操作する方法があれば、ここで非常に役立つと思われます。
pfaffman
(Jay Pfaffman)
2020 年 11 月 21 日午後 12:55
4
ネットワークの問題のようです。Cloudflare をご利用でしょうか?(ご利用の場合は、オレンジ色のクラウドをオフにしてください)。
DigitalOcean で「騒がしい隣人」の影響を受けている可能性もあるため、サポートチケットを起票することをお勧めします。
再構築を行ったにもかかわらずバージョンが変わっていないというのは、意味がわかりません。PostgreSQL 12 へのアップグレードが必要だったはずです。再構築時にその点に関する情報は何も確認されませんでしたか?
twuky
(tuckie)
2020 年 11 月 21 日午後 8:24
5
DigitalOcean 上で動作しているため、同様の事象が発生している可能性はありますが、それが今回の問題の原因として、これほど一貫して、かつこれほど長い期間にわたって現れるものかどうかは確信が持てません。サイトの問題をより適切に表現するとすれば、ページはテンプレートや「シェル」の部分は通常通り読み込めるものの、それ以降の実際のコンテンツの取得がいつまでも読み込み続けてしまうように見える、ということです。
再構築(rebuild)やバージョン変更については、そのようなエラーが発生している可能性はありますが、それを解析する良い方法がわからず、また何を探すべきかも明確ではありません。先ほど再構築を実行した際に、出力がスクロールする中で「postgres installed」といった行がちらりと目に入りました。これはコンテナ内部で行われている作業によるものかどうかはわかりませんが、例えば ./launcher rebuild app | grep 'postgres' を実行しても何もフィルタリングされず、./launcher rebuild app > output.txt && grep 'postgres' output.txt でも同様に何も取得できません。output.txt には情報が含まれているようですが、どうやらすべてではないようです。少なくとも、実際のコンソール出力と同じ形で終わっていないことは確かです。
twuky
(tuckie)
2020 年 12 月 1 日午後 6:58
6
こんにちは、スレッドの再掲(bump)などに関するルールに反していないか心配ですが、やはりお手伝いいただきたいです。先週のどこかで状況が悪化したようです。先週の休暇中は作業していなかったので、正確にいつ起きたかは分かりませんが、現在ではサイトへの接続が全くできません。IP アドレスへの ping は成功し、同じ IP が正しいドメインにリダイレクトしているようなので、ネームサーバーの問題でもなさそうです。
Firefox でサイトにアクセスすると、以下のエラーが表示されます:
https://aregames.art/ のサイトは修復不可能なネットワークプロトコル違反が発生しました。
データ転送中のエラーが検出されたため、表示しようとしているページを表示できません。
ブラウザのインスペクターからは有用な情報がほとんど得られません。GET リクエストに対するレスポンスがないように見えるためです。
この新しい問題を発見して以降、以下の対応を行いました:
複数回ビルドを再実行
Ubuntu を 20.04 にアップデート
再度ビルド
サイト自体は約 1 ヶ月間プラットフォームのテストにのみ使用しており、ソフトウェアを最新に保たなかったのが良くなかったのは確かだと受け入れています。Discourse を最初から再インストールすることも構いません。もちろん、サイト設定、ユーザー、投稿を維持したまま修正できれば理想的ですが、本当に保持したいのはテーマエディタで記述したカスタム CSS の一部だけです。もしそれがどこかに保存されていて、新しいセットアップにコピーできる場所があれば助かります。私としては(無責任にも)ローカルに最新バージョンを保存していませんでした。
ビルドプロセスについても、問題の解析方法がまだよく分かりません。私の確認範囲では、入力プロンプトなしで実行され完了し、終了後の最後の行は YAML からの設定で Docker コンテナを起動するものとなっています。ビルドが完了することと、正常に完了することは異なることは理解していますが、何か問題が起きている場合に、何をチェックすべきか、どこで診断すべきか分かりません。
Falco
(Falco)
2020 年 12 月 1 日午後 7:17
7
サーバーは起動していますか?SSHで接続できますか?
接続できる場合は、サーバーを再起動してからDiscourseを再ビルドしてください。
それでも起動しない場合は、再ビルドの出力をここに貼り付けてください。お手伝いいたします。
twuky
(tuckie)
2020 年 12 月 1 日午後 7:51
8
はい、ssh は正常に接続でき、毎回リビルドを実行する際もその方法で実行しています。そして、リビルド後もまだアクセスできません。リビルド後でも、ifconfig で Docker コンテナがサーバーの IP と異なる IP を持っていることが確認できますが、私のシステムの Web ブラウザからはその IP にアクセスできません。これが意図されたものかどうかはわかりません。./launcher rebuild app > output.txt は実際のコンソール出力の一部のみを出力しているようですが、それも含めることは可能です。
Ubuntu Pastebin (短い出力ファイル)
Ubuntu Pastebin (ターミナルから貼り付けた完全な出力)
Postgres から「discourse」データベースが既に存在するというエラーメッセージがいくつか表示されていますが、これは確認する価値があるでしょうか?
Falco
(Falco)
2020 年 12 月 1 日午後 8:39
9
twuky:
https://aregames.art/
DNS設定は正しいですか?
host aregames.art
aregames.art has address 198.54.117.200
aregames.art has address 198.54.117.199
aregames.art has address 198.54.117.198
aregames.art has address 198.54.117.197
なぜこれほど多くのIPアドレスがあるのですか?あなたのサーバーのIPは何ですか?
twuky
(tuckie)
2020 年 12 月 1 日午後 10:32
10
おお、これは非常に参考になりましたね。実はドメイン名が切れていて、たまたまその日がこの問題に直面し始めた日だったんです。プロバイダーを切り替える予定だったので、自動支払いをオフにしたまま日を過ごしてしまったようです。どうやらそのIPアドレスはドメインのパーキングサービスに関連しているらしいですね。今すぐ更新したので、正しいレコードが再適用されるかもしれません。どれくらいかかるかはわかりませんが、ホストはまだそのIPを報告しています。ドキュメントによると、IPから直接接続することはできないはずなので、しばらくはこれが機能したかどうかをテストできないでしょう。指摘してくださってありがとうございます。
とはいえ、当初直面していた問題についてはまだ少し混乱しています。キャッシュされたページにアクセスしていたのでしょうか?ネームサーバーの問題により、コンテンツへのリクエストが正常に送信されなかったのでしょうか?スレッド内の投稿や「最新の投稿」を開いたときの投稿リストなど、いくつかの要素は最終的に表示されましたが、時間がかかりました。
更新:上記でおっしゃる通り、host aregames.art は再び正しいIPとメールサーバーに解決されるようです。discourse-setup スクリプトで、DNSがそのIPに向かうことを確認できました。セットアップスクリプトは再構築も実行したようです。ただし、URLにアクセスすると「サーバーが見つかりません」と表示されます。443ポートでIPに直接アクセスすると、nginxの400 Bad Requestエラーが発生しますが、これはある種の進歩のように思えます。
再編集:ブラウザのキャッシュをクリアする必要がありました。シークレットタブからはサイトが完全に正常に読み込まれました。再び機能しているようです!まあ、ウェブサイトの料金を支払うことが、このサイトの修復の解決策だったのかもしれません。
Falco
(Falco)
2020 年 12 月 2 日午前 12:14
11
はい、キャッシュされたビューを使用していました。
Discourse 2.6 では、このビューにいる場合にドキュメントに特定の CSS クラスを追加する新しい機能を追加しましたが、まだデフォルトの UI 要素は用意されていません。
詳細については、Offline Indicator をご覧ください。