高負荷時にトピックのリアルタイム更新がフリーズする

昨日、活発な投稿と多数のユーザーがいるサイト向けの大きなパフォーマンス改善が実装されました。あなたのサイトでも大きく役立つはずです。

とても素晴らしいですね。確認の上、必要に応じてテストいたします。

さて、ゲームごとに状況は異なります。現在のCOVIDの状況(観客席が空)とほぼランダムな試合スケジュールでは、観客の行動を予測したり、過去のデータと比較したりすることは不可能です。

この1試合だけのデータでは、この変更が著しい改善をもたらしたとは言い切れません。

第1ペリオードは落ち着いて順調でしたが、第2ペリオード中の出来事によりメッセージ数が急増し、閲覧者の数も増加しました。当社の利用者の約60%がフリーズを経験したと報告しています。

2台のサーバー構成において、web_onlyサーバーだけが高いCPU使用率と平均負荷を報告しています。

「極度の負荷/読み取り専用」モードは発動しませんでした。これは良いことです。なぜなら、このモードはユーザー体験にとって最も痛手となるからです。全体として、観客はインデックスページにアクセスして議論を再開する方法を素早く学びました。これによりサーバー負荷がさらに増大しています。もしエンドユーザーがスロットリングされていることを何らかの方法で通知されれば、ユーザーは実際に1分間待ってくれる可能性が高まるでしょう。

非公開の会話からの進捗報告:DISCOURSE_REJECT_MESSAGE_BUS_QUEUE_SECONDS を 4 に設定することで体験が向上しました。また、メッセージバスにおけるレート制限の動作を改善するためのコア機能の変更を計画しています。

@ljpp の状況と似た現象を私たちは一部経験していますが、その規模ははるかに小さく(試合終了時刻の前後約 5 分間のみほぼ限定的に発生)、負荷が高いとみなされてメッセージが表示され、ユーザーがトピックから「追い出される」しきい値を調整する設定があるかどうか知りたいです。問題は常に 1 つのトピック、つまり試合トピックに集中しています。

また、同じ状況でより稀に発生する 502 エラーメッセージ(純粋な nginx メッセージ)についても懸念しています。おそらく nginx の設定でチューニングを施せば改善できる箇所があると思われます。これは本来あなたの担当範囲ではありませんが、良いご提案があればぜひ聞かせてください :laughing:

明確にしてください。テーマが新しい投稿で更新されない「フリーズ」が発生しているのでしょうか、それとも「極度の負荷」のエラーメッセージが表示されているのでしょうか?

このスレッドには、フリーズをある程度改善する調整が含まれていますが、それらはシステム負荷を増加させるため、「極度の負荷」が発生する可能性が高まります。

これらの状況では、トピックが凍結することが時々ありますが、その場合、システムは極度の負荷に関する警告も表示します。そのため、何が原因で何が結果なのかを特定することはできません。

極度の負荷自体は問題ありません。ただし、それがユーザーをトピックから強制的に退出させたり、新しい投稿の更新を中断させたりしない限りはです。その場合、むしろコンテンツの読み込みがゆっくりと進むこと(各ユーザーが読み書きするたびに15秒ほど読み込み中のスピナーが表示されること)を、凍結やユーザーの強制退出よりも好みます。

同意します。極端な負荷 におけるユーザー体験は、エンドユーザーにとって混乱を招くものです。

  • 同時接続ユーザー数はどれくらいですか?
  • どのようなハードウェアを使用していますか?
  • フォーラムの統計へのリンクはありますか?

@sam

現在 CDCK の SaaS プラットフォームに移行しているため、私は UX の観点からのみ観察できます。

過去数週間はゲーム内で活発な議論が行われていました。プラットフォーム変更により「フリーズ」はほぼ解消されましたが、トピックの更新方法に「変動」があり、まだ混乱を招く可能性があります。ただし、視聴者の 90% は文句を言うのをやめ、ゲームに集中しており、これは良い兆候です。

しかし、私が約 90% の確信度で再現可能なシナリオが一つあります。Android のバックグラウンドタブ、またはロック画面でゲームのトピックを保持した状態で、プラットフォームがセッションを再開する際に偶発的な問題が発生します。ゲーム内の興味深い出来事により忙しいトピックに戻ると、トピック表示が更新されないことがあります。トピックの下部でユーザーのアバターが点滅しているのは見えますが、投稿は表示されません。完全に復旧するにはブラウザをリフレッシュする必要があります。

再現パターンは簡単ではありません。以下の条件が必要です。

  • 活発なトピック
  • ゲーム内の活発なアクション → トピックへの熱気増大
  • トピックをロック画面またはブラウザのバックグラウンドタブに保持する

私たちも同様の問題に悩まされています。

もう一つ、最初の未読投稿にジャンプする際、この動作が数回繰り返されることがあります(「最初の未読投稿」の位置は毎回変わるはずなのに、同じ「未読投稿」に数回ジャンプしてしまう)。

具体例:

  1. 最初の未読投稿にジャンプする
  2. スクロールして 100 件の未読投稿を読む
  3. その後、別のトピックやホーム画面へ移動する
  4. 1 分ほど経つと、新たに約 30 件の未読投稿が追加されているが、アイコンをクリックすると、再び 1 の位置(つまり、新しい未読 30 件ではなく、130 件分前の位置)に飛ばされる

ただし、これもすべてのユーザーが同時に同じトピックで最も活発に更新や投稿を行う、ごく限られたピーク時の、非常に非常に活発なトピックでのみ発生します。やや面倒ですが、現時点では致命的な問題ではありません。

それは成功と見なせるでしょう。

Meta で再現例を提供していただけますか?おそらく難しいでしょう。同じトピックで同時に大量のアクティブユーザーがアイドル状態になっている必要があるためです。

現在の私の考えでは、ライブチャット機能を構築し、以下のような状況になったときにのみ、その場ですぐにインスタンス化すべきだということです。

  • 多数のユーザーが
  • 同じトピックに
  • 同時に
  • いる場合

そして、そのときのみ、ライブチャットボックスのオーバーレイをインスタンス化し、返信の代わりにチャットルームを利用するよう強く促します。場合によっては、トピックへの返信機能を無効にするかもしれません。

> 📢 おや、あなたが本当に必要としていたのはチャットルームのようですね…こちらです、お楽しみください!💬

はい、お気持ちわかります。でも、その機会が限られているので、手間をかける価値はないかもしれませんね。通常、そんな試合は週に1〜2回程度で、試合終了直後の5分間がほとんどです。ただ、実際に何度か「試合の90分間だけ一時的にチャットルームを切り替えられる機能があればいいのに」と考えたことがあります :laughing:

それでも、いずれはスクリーンレコーダーで録画しながら再現を試みてみます。

当インスタンスでは、プレイオフ戦の開始に伴い、429 エラーがいくつか発生しています。@staff の皆様は、過去 3.5 時間のログでそれらを確認できるはずです。また、決着のゴールが決まれば(今私が書いている時点で、試合は第 2のオーバータイムに入っています)、さらに増えることが予想されます。

いずれにせよ、もし現在もログの収集やトレースを行われているのであれば、ファイナルとそれに続くオフシーズンが近づいているため、対応できる機会は残されていません。

このスレッドに自分の名前を追加してフォローできるようにしたかっただけです。私たちは新しい体操フォーラムです。昨夜の米国オリンピック予選中に、上記の現象に加え、「フリーズ」も経験しました。こちらがそのスレッドです…

https://gymnaverse.com/t/us-wag-olympic-trials-night-2-live-discussion/1092

昨夜は4つのユニコーンが発生しました。

Digital Oceanでサーバーを4 Intel vCPU & 8 GBメモリに拡張し、以下の設定を行いました…

unicorn_workers: 8
db_shared_buffers: “2GB”

オリンピック中はさらに多くのトラフィックが見込まれます。大会中の「チャットのような」トラフィックに対して、サーバーをさらに最適化するために何ができるでしょうか?

Discourse をチャットとして利用し、単一のトピックに数百人のユーザーが参加している場合、かつそれが期間限定のイベントであるなら、サーバーを一時的に少しアップグレードすることをお勧めします。

デジタルオーシャンのプレミアム AMD ドロプレット(大型)をオリンピック期間中の 16 日間利用した場合の費用は54.85 ドルで、あなたのコミュニティ規模には十分すぎるほどです。

私の app.yml にはこれらの行が含まれていません。追加すればよいのでしょうか?

はい。env セクションに追加してください。

もしこれがまだスタッフの関心事項であれば、私たちの打ち上げは今夜18:30(UTC+3)と、明日同じ時刻に行われます。

2年連続でCOVID-19によりシーズンが台無しになった後の期待が高まっているため、tappara.coには大きなアクセス集中が発生すると予想されます。

@ljpp
現在の状況はいかがでしょうか?Redis 6 は役に立ちましたか?

現在は CDCK SaaS に移行しているため、スタッフには事前に伝えてあります。私たちはこの件における一種の実験場となっています。