【问题标题】:How many clients are connected to my firestore?有多少客户端连接到我的 Firestore?
【发布时间】:2019-10-18 18:58:22
【问题描述】:

我正在开发一个从 firestore 获取 341 个文档的颤振应用程序,经过 2 天的分析,我发现我的读取请求增加了太多。因此,我在 stackdriver metrics explorer 上制作了一个图表,从中我了解到我的应用程序一次只读取 341 个文档,是 firebase 控制台增加了我的阅读量。

现在,来看看困扰我的问题是什么,


1)当我们在控制台上看到数据时,如何考虑读取以及如何减少读取请求?基本上有 341 个文档,但每当我刷新控制台时,它都会显示超过 600 次读取。


2)如图所示,文档读取有两种类型“LOOKUP”和“QUERY”,它们之间的具体区别是什么?


3)我使用单个实例从 firestore 获取数据,当我打开我的应用程序时,图表显示 1 个活动客户端,这很酷,但在接下来的 5 分钟内,活动客户端的数量开始增加。

谁能解释一下为什么会这样?
对于最后一个问题,我尝试禁用所有服务帐户,然后再次打开我的应用,但又得到了同样的结果。

 Firestore.instance.collection("Lectures").snapshots(includeMetadataChanges: true).listen((d){
  print(d.metadata.isFromCache);//prints false everytime 
  print(d.documents.length);// 341 
  print(d.documentChanges.length);//341 
});

这是我正在使用的 sn-p。当应用启动时,它只运行一次。

【问题讨论】:

    标签: firebase flutter google-analytics google-cloud-firestore stackdriver


    【解决方案1】:

    我会尽力回答你的问题:

    当我们在控制台上看到数据时如何考虑读取以及如何 减少我的阅读请求?基本上有 341 个文档,但它是 每当我刷新控制台时显示超过 600 次读取。

    读取次数的考虑取决于您查询 Firestore 数据库的方式以及您从控制台访问此数据库的方式,因此使用 Firebase 控制台会产生读取次数,即使您打开控制台以执行其他操作,当新的时候发生对数据库的更改这些更改也会自动导致读取。并且从服务器读取的任何文档都将被计费。读取来自哪里并不重要。控制台应该包含在其中。

    查看此official documentation under the "Manage data" 标题,您可以看到有一条注释:“注意:在控制台中执行的读取、写入和删除操作计入您的 Cloud Firestore 使用量。”

    表示如果您认为这有问题,您可以直接联系Firebase support以获得更详细的答案。

    但是,如果您查看free plan of Firebase,您会发现您每天有 50K 的免费阅读量。

    我为此找到了一种解决方法(感谢 Dependar Sethi)

    1. 为 Firestore 页面的“使用”选项卡添加书签。 (所以你基本上 “跳过”数据选项卡)
    2. 以某种方式添加一个虚拟集合,以确保它是 默认情况下加载的第一个集合(按字母顺序) Firestore 页面。

    你可以找到他的完整解决方案here

    此外,您可以优化查询,但您只想使用where() methodpagination with Firebase 检索您想要的数据

    如图所示,有两种类型的文档读取 'LOOKUP' 和 'QUERY',它们之间的确切区别是什么?

    我想它们之间没有重要区别,但是“QUERY”获取实际数据(当您调用 data() 方法时),而“LOOKUP”获取这些数据的引用(不调用 data() 方法)。

    我使用单个实例从 firestore 获取数据,当我 打开我的应用程序,图表显示 1 个活跃的客户端,这很酷,但在 接下来的 5 分钟,活跃客户端的数量开始增加。

    对于这个问题,考虑到您在 Stackdriver 中选择的指标,我可以看到 3 个连接的客户端。并根据decription of "connected client" 指标:

    活动连接数。每个移动客户端将有一个连接。 admin SDK 中的每个监听器都是一个连接。每 60 秒采样一次。采样后,最长 240 秒内数据不可见。

    所以请检查:有多少手机连接到此实例,以及您的应用中有多少听众。所有这些的总和就是您在 Stackdriver 中看到的连接客户端的实际数量。

    【讨论】:

    • 非常感谢。当我测试它时,我是唯一一个使用应用程序的人,但在堆栈驱动程序控制台中,它显示我连接了 5 个客户端。 (我也禁用了所有其他服务帐户)
    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2017-09-12
    • 2015-04-20
    • 2017-05-16
    相关资源
    最近更新 更多