【发布时间】:2022-01-23 20:35:38
【问题描述】:
我正在对我的项目进行一些压力测试,需要您的帮助来理解行为。我有一个网络服务器,它接受来自用户的 json 数据并将其存储在 firestore 集合中。用户可以查询这些数据。文档 json 只有两个字段 id1 和 id2 并且都是字符串。现在,作为压力测试的一部分,我启动了 500 个线程来模拟 500 个客户端,这些客户端查询集合以向每个线程提供 id1 == thread_id 的文档,如下所示:
query := client.Collection("mycollection").Where("id1", ==, my_id)
iter := query.Documents(ctx)
snapList, err = iter.GetAll()
我看到两个问题:
- 其中一些查询需要长达 20 秒才能返回。
- 某些查询因连接错误/io 超时而失败。我正在使用 go sdk。
"message":"error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp x.x.x.x:443: i/o timeout""}
根据 Firestore 文档,最多允许 100 万个并发客户端。那为什么我只有 500 个问题?即使在空集合上运行此测试,我也观察到相同的行为。我还缺少其他速率限制吗? 新的
【问题讨论】: