2017-06-08 11 views
-1

現在、私が唯一働いている非実動FirebaseアプリケーションでFirebaseをテストしています。ロングスタンバイ後のFirebaseデータベースの高遅延

私は、クエリを約8秒を取り、最後24時間中に任意のクエリがなかった後にデータを取得するために、データベースを照会してみてください。クエリが完了した後、次のクエリは通常の時間(約100ms)を要します。

これはクエリをキャッシュすることではなく、「次のクエリ」とは同じではない新しいクエリを意味します。それを再現する

  • は、ユーザーと呼ばれるデータベース・ノードを作成し、ユーザーの子どもたちは、ユーザデータ(姓、名、年齢、性別など)
  • あるこのノード
  • 500,000ユーザーを追加します。
  • UIDでユーザーを取得し、時間を測定します。
  • 24時間待機(正確な時刻はわかりませんが、約24時間です)
  • UIDで任意のユーザーを取得して時間を測定します。 (約8秒かかる)
  • UIDで任意のユーザーを取得し、時間を測定します。

Firebaseリアルタイムデータベースの既知の問題であるかどうか知りたいですか?

答えて

0

Firebaseのサポートに達したため、問題を再現でき、約6秒の待ち時間に遭遇しました。調査後の回答は次のとおりです。

これは意図した動作です。リアルタイムのデータベースクエリは、メモリ内のインデックスを構築することで機能します。インデックスは、その場所のノードの数に比例した時間がかかります。インデックスが構築されたら、は非常にですが、初期のビルドはビルドに少し時間がかかります。

インデックスをデータベースのメモリに残したい場合は、リスナーに常にこのクエリをリスンする必要があります。

したがって、基本的に、データベースは大きなデータベースのインデックスを作成するため、クエリの処理に時間がかかります。

この問題は、リスナーをデータベースに保持したり、数時間ごとにデータベースに問い合せたりすることで解決できます。

本番では、この問題に直面する可能性は非常に低いですが、データベースは常にユーザーがアクセスしていますが、データベースに常時アクセスせず、長い待ち時間が必要な場合は、議論されたソリューションを活用する必要があります。

0

Firebaseは、最近使用したデータを内部キャッシュに保持します。このキャッシュは数分後にクリアされます。

しかし、正確な数値は、読み込んでいるデータの量とそのデータの読み込み方法によって異なります。これらの数字を再現する方法を示す特定の設定を見ることなく、誰も言うことができません。

+0

Hey Puf、同じことを再度クエリすることについて話しているわけではないので、キャッシュについてはわかりません。それを再現するためのセットアップ命令を追加しました。私はこの行動の正確な測定値を持っており、私はこの事が起こっていることを完全に確信しています。 –

+0

申し訳ありません。 Firebase *サーバー(最近のアイテムのキャッシュを保持していますが、データのロード方法によっては問題に影響する可能性があります)接続を再確立することもできますが、コード+条件は表示されません。それを複製するには、誰もできることはあまりありません。 –

関連する問題