【发布时间】:2013-07-12 02:16:46
【问题描述】:
我正在尝试优化 GAE 的性能,但一旦部署,我会得到非常不稳定的结果。很难看出每个优化是否真的有效,因为数据存储和内存缓存操作需要一个非常可变的时间(对于相同的操作,它的范围从毫秒到秒)。
对于这些测试,我是唯一一个通过刷新主页在应用程序上只发出一个请求的人。没有其他人/流量发生(除了我自己的浏览器从页面请求图像/css/js 文件)。
编辑:为了确保丢弃不是由于来自浏览器的并发请求(images/css/js),我通过仅请求带有 urllib2.urlopen 的页面来重做测试()。问题仍然存在。
我的问题是:
- 1) 由于机器/资源是共享的,这是否值得期待?
- 2) 发生这种行为的最常见情况是什么?
- 3) 我可以从那里去哪里?
这是一个非常缓慢的数据存储获取(memcache 刚刚刷新): Full size
这是一个非常慢的 memcache 获取(因为之前的请求,东西被缓存了): Full size
这是一个缓慢但更快的 memcache 获取(与前一个相同的重现步骤,不同的调用很慢): Full size
【问题讨论】:
-
您的数据存储获取速度非常慢!您尝试运行的查询是什么,它是否取决于 zig-zag 连接?
-
它只是具有各种字符串、整数、引用的实体(模型中没有 blob)。我可以运行两次测试并获得 10 毫秒的查询或获取,然后再次运行并在 7 秒内运行,再运行一次并获得 200 毫秒。至少如果它一直很慢,我会知道我的查询/数据很糟糕。
-
你确定你有一个运行缓慢的请求实例,并且你没有测量启动时间
-
是的,有一个正在运行的实例。如果没有,日志显示: 该请求导致为您的应用程序启动了一个新进程,从而导致您的应用程序代码首次加载。因此,与您的应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的 CPU。 - 我也怀疑启动实例是否会出现在 appstats 中的单个数据存储/内存缓存操作中。
-
你在使用 NDB 吗?如果是,您是否尝试异步执行某些数据存储操作。这样,您将只依赖于最慢操作的延迟(而不是累积的延迟)。相关:您可能还想看看proppy-appstats.appspot.com,它介绍了不同的数据存储优化模式。
标签: python google-app-engine memcached google-cloud-datastore