【问题标题】:Firebase database high delay after a long standby长时间待机后的 Firebase 数据库高延迟
【发布时间】:2017-06-08 17:11:26
【问题描述】:

我目前正在一个非生产 Firebase 应用程序上测试 Firebase,我是唯一的工作人员。

当我在过去 24 小时内没有任何查询后尝试查询数据库以检索数据时,查询大约需要 8 秒。查询完成后,接下来的查询将花费正常的时间(大约 100 毫秒)。

这与缓存查询无关,“下一个查询”是指不同的新查询。

复制它:

  • 创建一个名为 users 的数据库节点,users 子节点是用户数据(名字、姓氏、年龄、性别等)
  • 向该节点添加 500,000 个用户
  • 通过用户的 UID 获取用户并测量时间。 (大约需要 100 毫秒)
  • 等待 24 小时(我不知道确切的时间,但我确定大约 24 小时)
  • 通过其 UID 获取任何用户并测量时间。 (大约需要 8 秒)
  • 通过其 UID 获取任何用户并测量时间。 (大约需要 100 毫秒)

我想知道这是否是 Firebase 实时数据库的已知问题?

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    我联系了 Firebase 支持,他们能够重现该问题并面临大约 6 秒的等待时间。以下是他们调查后的回答:

    看起来这是预期的行为。实时数据库查询通过在内存中构建索引来工作,这需要与该位置的节点数量成线性关系的时间。构建索引后,速度非常快,但初始构建可能需要一些时间,尤其是对于大型位置。

    如果您希望索引保留在数据库的内存中,您应该有一个监听器始终监听此查询。

    所以基本上数据库需要很长时间来处理查询,因为索引大型数据库。

    问题可以通过在数据库上保持一个监听器或每隔几个小时查询一次数据库来解决。

    在生产中你不太可能遇到这个问题,因为数据库一直被用户访问,但是如果你的数据库不是一直被访问并且你不希望用户体验那么长时间等待时间,您应该使用讨论的解决方案。

    【讨论】:

      【解决方案2】:

      Firebase 将最近使用的数据保存在其内部缓存中。此缓存会在几分钟后被清除。

      但具体数字取决于您加载的数据量以及加载数据的方式。没有看到显示如何重现这些数字的特定设置,真的没什么人可以说。

      【讨论】:

      • 嘿Puf,我不确定它是否与缓存有关,因为我不是在谈论再次查询相同的东西。我添加了设置指令来重现它。我对这种行为有准确的测量,我完全确定这件事正在发生。
      • 对不起。我应该更清楚:我的意思是他们 Firebase *server( 保留最近项目的缓存。根据您加载数据的方式,这可能会影响问题。它也可能正在重新建立连接。但没有看到代码+条件要复制它,没有多少人可以做。
      猜你喜欢
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多