GAE中的get_by_key_name()长达750毫秒。这是预期的吗?

时间:2014-02-13 04:17:51

标签: google-app-engine appstats

我的程序在循环中获取~100个条目。使用get_by_key_name()获取所有条目。 Appstats显示一些get_by_key_name()请求占用的时间长达750毫秒! (其他大值是355ms,260ms,230ms)。其他提取的平均值范围为30ms至100ms。这些时间是实时的,因此有助于'ms'而不是'cpu_ms'。

由于上述原因,返回网页的总时间非常长,ms = 5754,其中cpu_ms = 1472 。 (对于背靠背请求,反复出现以上时间。)

环境: Python 2.7,webapp2,jinja2,高复制,没有其他并发请求到服务器,前端实例类是F1,还没有设置memcache,最大空闲实例是自动的,最小挂起延迟是自动的,使用db(NOT NDB)。

我将非常感谢任何帮助,因为我基于整个数据库设计仅使用get_by_key_name()获取数据存储区中的条目!!

更新 我在每个get_by_key_name()方法调用之前和之后立即尝试使用time.clock()进行分析。我从time.clock()获得的每次通话的差异是10ms! (只是想澄清在不同的Kinds上调用get_by_key_name())。

根据time.clock(),总执行时间(挂钟时间)为660ms。但是实时是5754(= ms),每个GAE日志的cpu_ms是1472。

问题摘要:

  1. * [更新:通过传递密钥列表解决了这个问题]为什么get_by_key_name()需要这么长时间?*

  2. 为什么5754的ms远远超过1472的cpu_ms。任务执行是否处于暂停/等待状态的75%(1-1472 / 5754)的时间由于实时(挂钟) )就最终用户而言,所花费的时间是多久?

  3. 如果以上情况属实,那么为什么time.clock()显示在第一个get_by_key_name()请求开始和最后一个(~100th)get_by_key_name()请求之间仅经过了660毫秒(挂钟时间) ;虽然GAE将此时间显示为5754ms?

0 个答案:

没有答案