1

我遇到了Google Cloud Bigtable Python客户端的性能问题。我正在研究一个写入和读取GCP Bigtable实例的烧瓶API。 API使用python客户端与Bigtable进行通信,并被部署到GCP App Engine灵活环境。Google Cloud Bigtable Python客户端性能问题

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

我知道客户目前在阿尔法。我不知道如果性能问题是已知的,或者是否有人也遇到同样的问题

更新

我发现从谷歌说明一个文档:

有与网络连接问题。网络问题可以通过 降低吞吐量,并导致读取和写入操作的时间通常比 长。尤其是,如果您的客户不是在您的Cloud Bigtable群集所在的同一区域运行的 ,那么您会看到问题。

在我的情况下,我的客户是在不同的地区,通过将其移动到同一地区有一个巨大的性能提高。但是性能问题仍然存在,文档中的建议是将客户端放在与Bigtable相同的区域中。

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

回答

0

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

虽然它不能解决您需要频繁读取或写入的情况,但需要瞬间执行