我想在appengine上测试python27,所以我已经从python25迁移了我的应用。每个请求的性能降低了2倍以上!然后,我返回到python25,性能再次像以前一样。这是一张图片:

(毫秒/请求)(CGI处理程序python 27,然后python25)

我的应用程序使用WerkzeugJinja2,并且大量使用了内存缓存。是什么原因会导致性能急剧下降?还是仅因为appengine上的python2.7仍处于beta中?

有关应用程序的一些详细信息:

这是相当简单的网上商店。 pdf生成有一些延迟的任务,但是这些任务不会对整体图形产生太大影响,因为首页获得的点击率最高。几乎所有内容都被缓存。使用空的缓存最多需要0.8秒才能加载python 2.5的页面。非高速缓存的页面需要很长时间才能加载,这主要是因为有许多数据库查询。缓存的页面加载时间为60〜100毫秒。平均加载时间约为150毫秒。使用python 2.7的性能非常糟糕。未缓存的页面需要2秒钟以上的时间才能加载。缓存的页面加载时间超过200毫秒。

不幸的是,我没有任何分析数据,也无法确定python 2.7到底是什么使速度变慢。

我的页面加载时间数字是从服务于〜10 req/sec的实时页面中收集的,并且有1个驻留的python25实例可以轻松应对此负载。

我还使用wsgi和threadsafe:yes测试了python 2.7,但与python 2.7和cgi相比,性能仅提高了一点。

最佳答案

Somewhere on Usenet我从Google读到了一条这样的声明:“Python 2.7运行时在某些情况下比Python 2.5运行时要慢,而在另一些情况下要快。在这一点上,我们尚未公开其原因。”到目前为止似乎没有人发现2.7比2.5快的场景...

我读到这个

  • Google知道存在preformace问题。
  • 他们不确定如何处理。

  • 我的分析表明python 2.7多线程应用程序花费了他们35%的时间用{method 'acquire' of 'thread.lock' objects}-貌似发生在Google的RPC代码中。也有迹象表明导入存在严重的锁定问题。

    基本上,除了等待AppEngine对其进行修复之外,您无能为力。另请参阅this comprehensive documentation有关减速的信息。

    几乎可以肯定的是,在这些因素中不起作用的因素是:
  • 上传pyc文件(GAE基础架构为您完成)
  • 服务器配置(GAE如此大规模,甚至在封闭的beta 2.7中也很慢)。
  • WSGI与CGI(不会解释如此巨大的性能影响)

  • 丑陋的事情是Google分两步进行了大幅提价,但告诉我们“通过使用多线程python 2.7,您可以更有效地运行,以至于新价格看起来不会太糟糕”。不幸的是Python 2.7。运行时仍被标记为“实验性”,并且无法提供生产质量的性能。

    关于python - Appengine,使用python27导致性能下降,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8341112/

    10-12 00:27
    查看更多