1

我遇到了 Google Cloud Bigtable Python 客户端的性能问题。我正在开发一个烧瓶 API,它可以写入和读取 GCP Bigtable 实例。该 API 使用 python 客户端与 Bigtable 通信,并部署到 GCP App Engine 柔性环境中。

在低流量下,API 工作正常。然而,在负载测试期间,与不与 Bigtable 通信的类似端点相比,读取和写入 Bigtable 的端点性能大幅下降。502 Bad Gateway此外,即使在 App Engine 中关闭了运行状况检查,大部分发送到端点的请求也会收到。

我知道客户目前处于 Alpha 阶段。我想知道性能问题是否已知,或者是否有人也遇到过同样的问题

更新

我从谷歌找到了一份文档说明:

网络连接存在问题。网络问题会降低吞吐量并导致读取和写入花费比平时更长的时间。特别是,如果您的客户端未在与您的 Cloud Bigtable 集群相同的地区中运行,您会发现问题。

就我而言,我的客户位于不同的区域,通过将其移动到同一区域,性能得到了巨大的提升。但是性能问题仍然存在,文档中的建议是将客户端放在与 Bigtable 相同的区域中。

我还考虑过使用容器引擎或计算引擎来更容易指定区域,但我想继续使用 App Engine 的自动缩放功能和托管服务。

4

1 回答 1

3

Bigtable 客户端需要 3 毫秒到 20 毫秒来完成每个请求,并且因为 python 是单线程的,在这段时间内它只会等到响应返回。我们找到的最佳解决方案是针对任何写入,将请求发布到 Pubsub,然后使用 Dataflow 写入 Bigtable。它的速度要快得多,因为在 Python 中发布消息需要不到 1 毫秒的时间才能完成,而且因为 Dataflow 可以设置为与 Bigtable 完全相同的区域,而且它很容易并行,所以它可以写得更快。

虽然它不能解决你需要频繁读取或写入需要即时的场景

于 2017-12-12T15:44:01.450 回答