将GCP数据存储与GCP云功能一起使用时查询时间较慢

时间:2017-10-16 21:22:11

标签: google-cloud-datastore google-cloud-platform google-cloud-functions

我部署了GCP HTTP触发的云功能,该功能通过密钥从GCP数据存储区查询实体。这是代码:

div

根据日志,此函数在调用时需要约1.6秒才能完成。重复调用不会更快。

删除查询并响应HTTP请求需要大约0.5秒才能完成,因此查询似乎需要大约1.1秒才能完成。对我而言,这是非常缓慢的,这似乎不太可能是GCP数据存储的预期性能。

我认为DB和函数可能在不同的区域运行但我无法检查,文档中给出的指令不正确(https://cloud.google.com/datastore/docs/locations#location-r)。该区域不会显示在我的页面上。

我的设置可能会出现什么问题?我期待简单查询约50ms,而不是〜1100ms。

1 个答案:

答案 0 :(得分:2)

this问题中,您可以找到Google堆栈跟踪的附加屏幕截图,并看到数据存储区和GCP的最佳时间约为100毫秒。

老实说,我们使用Datastore工作的GCF超过3个月,而这次通常价值超过100毫秒,每次通话约200 - 400毫秒。我与GCP支持进行了对话并且可以确认,目前他们遇到了麻烦,只有请求在GCF和数据存储之间进行路由和优化。我通过Yandex-Tank收集了几个性能测试数据集,平均请求延迟大约800ms到7秒(大约4-5个数据存储区串行请求)。

经过3个月的开发,我们转移到App Engine,发现数据存储在这种环境下表现得更快,每个数据存储区请求的平均时间大约为20-30毫秒(快4-5倍)。

我还注意到,数据存储区的查找时间几乎不取决于它所运行的数据量。它是1条记录还是1000条记录,时间几乎相同,为20-30毫秒。我相信如果我们能够在没有任何网络通信附加功能的情况下查看Datstore本身,这一次会更好。

现在我们将redis添加为缓存服务以加速所有请求。我想它可能也适用于GCF和Datastore,但我不认为这将是一个有保障的解决方案。 因此,请考虑使用GCF作为实用程序处理单元而不是主处理端点。