Google app engine 应用程序引擎:1秒的开销来自哪里?

Google app engine 应用程序引擎:1秒的开销来自哪里?,google-app-engine,Google App Engine,下面是我的代码、日志以及应用统计屏幕截图。我试图优化用户从查询中快速获取信息的速度,但我被开销所困扰。如果有帮助的话,我在这里使用一个带有自动缩放的F1实例。要有一个响应迅速的应用程序真的很难,我也不知道该怎么做才能提高性能。如果我在这里还有其他事情要做,如果有人能告诉我,我会非常感激。谢谢 邮寄申请代码: 最后一条logging.debug语句就在return语句之前 应用程序统计: 编辑: 为了好玩,我将instance类升级为F4,运行了三个实例,这是当时服务器运行的唯一请求,我仍然看到

下面是我的代码、日志以及应用统计屏幕截图。我试图优化用户从查询中快速获取信息的速度,但我被开销所困扰。如果有帮助的话,我在这里使用一个带有自动缩放的F1实例。要有一个响应迅速的应用程序真的很难,我也不知道该怎么做才能提高性能。如果我在这里还有其他事情要做,如果有人能告诉我,我会非常感激。谢谢

邮寄申请代码:

最后一条logging.debug语句就在return语句之前

应用程序统计:

编辑:

为了好玩,我将instance类升级为F4,运行了三个实例,这是当时服务器运行的唯一请求,我仍然看到~1秒的开销,这与RPC调用无关

标题中的相应日志1893 ms:

D 2014-07-22 15:29:46.261 Getting self vars took 0.000779867172241 seconds
D 2014-07-22 15:29:46.261 To get to MD5 gen took 0.00116991996765 seconds
D 2014-07-22 15:29:46.929 To get to index search took 0.668219804764 seconds
D 2014-07-22 15:29:46.949 To get to pickling took 0.689079999924 seconds
D 2014-07-22 15:29:46.950 To get to database key gen took 0.690039873123 seconds
D 2014-07-22 15:29:46.961 To get to database async lookup took 0.701029777527 seconds
D 2014-07-22 15:29:46.962 To get to context generation took 0.701309919357 seconds
D 2014-07-22 15:29:46.962 To get to template HTML gen took 0.70161986351 seconds
D 2014-07-22 15:29:46.963 To get to writing output HTML took 0.702219963074 seconds

看起来主要延迟在memcache.get和memcache.set之间。看起来这就是使用jsonpickle处理搜索结果的地方。这可能要花这么长时间。你从搜索结果中得到了多少数据?尝试隔离pickle操作,看看需要多长时间。

可能仍在运行异步操作?您是否使用ndb.toplevel装饰器?是的,请参阅代码的开头。似乎很难相信get_多次运行会花费1秒的时间。我会将未来存储在异步get上,并在最后等待它们,然后有一条额外的日志消息。我打赌这比你希望的要贵得多。我怀疑它会在那时出现在appstats上。您应该能够添加限制您愿意等待的时间量的上下文。这将在不减慢速度的情况下准备缓存。future\u list=ndb.get\u multi\u asynckeys稍后您可以运行ndb.future.wait\u allfuture\u list来阻止缓存。如果您将适当的日志消息包装在那里,您应该会看到延迟,如果这是原因的话。它也应该出现在appstats中。这不会解决您的问题,但会确保这实际上是您的问题。如果这是您的问题,并且您不需要数据,则可以设置一个具有很短超时的上下文对象。无需等待即可为缓存充值。需要说明的是,在该函数返回之前,不会将响应的字节发送到浏览器。您可以使用非常短的超时设置上下文对象。不用等待就给缓存充注。对不起,你能澄清这意味着什么,特别是给缓存充注吗?我对这个查询所做的只是试图将数据放入缓存中,以便稍后通过AJAX请求快速引用到服务器。在很短的超时时间内升级一个上下文对象是否会将我的查询结果放入缓存以备以后使用?我会在pickle步骤周围检查时间戳。此处:D 2014-07-22 15:29:46.929到达索引搜索花费了0.668219804764秒D 2014-07-22 15:29:46.949到达酸洗花费了0.68907999924秒。所以减去这两个,它是~21ms。getsizeofsearch_results_pickle在我刚刚做的一个示例运行中产生了9924字节。
D 2014-07-22 14:29:24.112 Getting self vars took 0.00068998336792 seconds
D 2014-07-22 14:29:24.112 To get to MD5 gen took 0.0011100769043 seconds
D 2014-07-22 14:29:24.732 To get to index search took 0.620759963989 seconds
D 2014-07-22 14:29:24.749 To get to pickling took 0.637880086899 seconds
D 2014-07-22 14:29:24.750 To get to database key gen took 0.638570070267 seconds
D 2014-07-22 14:29:24.772 To get to database async lookup took 0.661170005798 seconds
D 2014-07-22 14:29:24.772 To get to context generation took 0.661360025406 seconds
D 2014-07-22 14:29:24.835 To get to template HTML gen took 0.723920106888 seconds
D 2014-07-22 14:29:24.836 To get to writing output HTML took 0.725300073624 seconds
D 2014-07-22 15:29:46.261 Getting self vars took 0.000779867172241 seconds
D 2014-07-22 15:29:46.261 To get to MD5 gen took 0.00116991996765 seconds
D 2014-07-22 15:29:46.929 To get to index search took 0.668219804764 seconds
D 2014-07-22 15:29:46.949 To get to pickling took 0.689079999924 seconds
D 2014-07-22 15:29:46.950 To get to database key gen took 0.690039873123 seconds
D 2014-07-22 15:29:46.961 To get to database async lookup took 0.701029777527 seconds
D 2014-07-22 15:29:46.962 To get to context generation took 0.701309919357 seconds
D 2014-07-22 15:29:46.962 To get to template HTML gen took 0.70161986351 seconds
D 2014-07-22 15:29:46.963 To get to writing output HTML took 0.702219963074 seconds