【发布时间】:2016-10-01 05:54:13
【问题描述】:
我有一些 AppEngine 操作花费的时间比预期的要长,所以我一直在查看 GAE 控制台上的跟踪日志以获得一些见解。
其中之一是对实体进行排序的简单查询,例如
(data, cursor, more) = query.order(-cls.created).fetch_page(RESULTS_PER_PAGE, start_cursor=cursor)
但是根据日志,如果我正确理解了跟踪(下面的屏幕截图),该操作会运行 2 个查询:一个是获取数据(RunQuery),一个是查找是否有更多数据(下一步)。两者都不会花费太多时间,但两者之间有 600 毫秒的延迟。
我想知道为什么这个延迟都太长了?我看到了一些关于 Next() 的问题,其中查询花费了更长的时间 (How do I prevent application calling datastore_v3.next() when calling get_multi?),但在我的情况下 Next() 的时间非常短。瓶颈似乎是两者之间的时间。这在很多情况下都会发生 - 前面的 NDB 查询只是一个示例。
所以:
- 我可以避免调用 Next() 或
- 我能否尽量减少 RunQuery 和 Next() 之间的延迟
我使用的是标准实例,除了入站预热之外,我的 app.yaml 文件中没有任何特定设置。
【问题讨论】:
标签: google-cloud-datastore app-engine-ndb