小编cho*_*how的帖子

如何减少Google App Engine数据存储延迟?

通过appstats,我可以看到我的数据存储区查询大约需要125ms(api和cpu组合),但在执行查询之前通常会有很长的延迟(例如最多12000ms).

我可以看到来自数据存储区的延迟与我的查询无关(例如,相同的查询/数据具有截然不同的延迟),所以我假设它是app引擎的调度问题.

其他人是否也看到同样的问题?

有没有减少延迟(例如管理控制台设置)?

这是appstats的屏幕截图.这个servlet只有很少的cpu处理.它执行getObjectByID,然后执行数据存储区查询.该查询具有OR运算符,因此它被app引擎转换为3个查询.

appstats截图 .如您所见,在第一个getObjectByID执行之前需要6000ms.get操作之前没有处理(除了获取pm).我认为这6000ms的延迟可能是由于实例预热,所以我将我的空闲实例增加到2以防止任何热身.

然后在getObjectByID和查询之间有大约1000ms的第二个延迟.get和查询之间没有代码行.代码只是获取getObjectByID的结果,并将数据用作查询的一部分.

总计是8097ms,但我的数据存储操作(以及99%的servlet)只有514ms(45ms api),尽管每次运行servlet时数字都会改变.这是另一个appstats屏幕截图,它是针对相同数据在同一个servlet上运行的. 在此输入图像描述

这是我的java代码的基础知识.出于安全考虑,我不得不删除一些细节.

user = pm.getObjectById(User.class, userKey);           
//build queryBuilder.append(...
final Query query = pm.newQuery(UserAccount.class,queryBuilder.toString());
query.setOrdering("rating descending");
query.executeWithArray(args); 
Run Code Online (Sandbox Code Playgroud)

编辑:使用Pingdom,我可以看到GAE延迟从450毫秒到7,399毫秒不等,或差异为1,644%!! 这是两个空闲实例,网站上没有用户. 在此输入图像描述

java google-app-engine latency jdo

13
推荐指数
1
解决办法
2459
查看次数

标签 统计

google-app-engine ×1

java ×1

jdo ×1

latency ×1