投稿に数秒かかる

500万件の投稿があり、検索も非常に高速です。ホスティングは、2.8GHzのXeon E5-2680の共有vコア6コア、16GBのRAM、SSDストレージ上で動作しています。ただし、ユーザーが同時に開始する投稿数に関する指標は持っておらず、ロックの問題が発生する可能性があります。

一方、投稿はしばしば非常に遅くなります。投稿が完了するまでに6〜7秒かかることがあります。Discourseは処理中もブロッキングしないため、ユーザー体験を損なうことはありません。

「いいね!」 1

これは…普通ではありません。

100件や1000件の投稿があるトピックでは、おそらくこれが最も一般的なケースでしょう。短いトピックでは、そうなるべきではありません。

@Wingtipのフォーラムには、非常に長いトピックが山ほどあったことを思い出します。

「いいね!」 2

はい、間違いなくそうです。

6〜7秒の投稿時間はメガトピックに固有のものですか?100件の返信があるトピックに返信した場合も、6〜7秒かかりますか?

今すぐ再現できませんでした。投稿が遅れる現象は断続的に発生しています。スレッド内の投稿数との相関は見られません。もしかすると、他の誰かが同時に投稿していることによるロックの問題か、何か別の要因かもしれません。

投稿数 7:非常に高速。ここ(メタ)とほぼ同じ程度
投稿数 500:やや遅いかもしれませんが、それほどひどくはありません。おそらく 1.5 秒程度?
投稿数 16,000:500 の場合とほぼ同じように見えます

「いいね!」 1

また、多数のユーザーが巨大なトピックにアクセスすると、キューイングされたリクエストにより PG サーバー全体が遅延し、パフォーマンスにも影響が及ぶと考えています。

多くの人がスレッドを閲覧する体験を、1〜2人が投稿しようとする体験よりも優先するのは、理にかなっています。

勇敢な気分ですか?少しの間、mini_profiler を有効にしてくださいますか?これで、どのクエリが問題を起こしているのかを特定するために、右側に処理時間が表示されます。

私の投稿の処理時間は 576ms でした

最も重いクエリはこれです:

そして @riking がこれを修正する PR に取り組んでいます :confetti_ball:

「いいね!」 6

それを有効にすると、全体のパフォーマンスにどの程度の影響がありますか?また、サイトの再構築なしで有効にすることはできますか?Postgres 12 の変更以降、pg10 に固定する設定にしても、再構築を成功させることができていません。

app.yml ファイルで、開発者用メールアドレスとしてメールアドレスを設定する必要があります。コンテナを破棄して再起動することで、再ビルドなしで適用できます。Discourse Docker によるアップグレードなどでコンテナに変更を加えた場合、その変更は失われます。

また、コンテナ内の config/discourse.conf を編集した後に

  sv restart unicorn

を実行することもできます。

「いいね!」 1

再構築が失敗しているため、コンテナを破棄すると完全に立ち行かなくなるのではないかと懸念しています。昨日の PostgreSQL 12 へのアップグレード試行では多くのエラーが発生したため、サイトを長時間ダウンさせないという確信が得られるまで、変更を加えることに抵抗があります。

「いいね!」 1

まあ、無料のアドバイスはそれなりの価値ですが、次の手順は比較的安全です。

cd /var/discourse
./launcher enter app
vi config/discourse.conf
# vi で developer_emails 行に自分のメールアドレスを編集し、vi を終了
sv unicorn restart
# ウェブサーバーが再起動してページを提供し始めるまでの 30〜90 秒間、パニック状態になります

ただし、この方法でも何かを壊す可能性があります。設定ファイルを誤って編集して、Discourse が起動しなくなることも考えられます。

sv restart unicorn は機能しましたが、sv unicorn restart は機能しませんでした。

私はその逆を約3分の1の割合で間違えてしまいます。:wink:

でも、以前は半分も間違えていたので、これは進歩ですね。

「いいね!」 1

これで必要なものは揃いましたか?16,000件の投稿があるスレッドに投稿しています。特に遅いというわけではなく、通常の投稿時間のように見えました。

以下が完全な出力です:
https://paste.mozilla.org/f5nJrPag

「いいね!」 2

これは app/models/user_stat.rb:159:in `update_topic_reply_count’ から来た 2 秒のクエリです。

つまり、@riking が取り組んでいるのと全く同じ問題です。

「いいね!」 5

素晴らしい!投稿時間の大幅な改善は、ユーザーを本当に喜ばせるでしょう。現在、最も不満が寄せられている点です。ただし、その直後にはまた別のことで文句を言い出すことは間違いありません。

「いいね!」 3

少しでも気分が晴れるかどうかわかりませんが、私もそのクエリについて苦情を申し立てました。メタには既読状態の情報が大量にあるからです。すべての返信でカウント作業を行うのは、無駄な作業になっています…

「いいね!」 1

別のソフトウェアからのテストインポートにおいて、投稿数が20万強のトピックがありましたが、私はそのトピックに問題なく投稿できました。重要なのはトピックのサイズではなく、投稿を行うユーザーであるはずです。

「いいね!」 1