我想在appengine上测试python27,所以我从python25迁移了我的应用程序。每个请求的性能都要慢2倍!然后我又回到了python25,性能再次像以前一样。这是一张图片:
(毫秒/请求)(cgi处理程序python 27,然后是python25)
我的应用使用Werkzeug,Jinja2,并且使用了很多memcache。什么原因会导致性能急剧下降?或者只是因为appengine上的python2.7还处于测试阶段?
有关申请的一些详细信息:
网上商店很简单。有一些延迟的任务与pdf生成,但这些不会影响整体图形,因为首页获得最多的命中。几乎所有内容都是memcached。使用python 2.5加载页面时,空缓存需要约0.8秒。非缓存页面加载时间很长,主要是因为有很多数据库查询。缓存页面加载时间为60~100 ms。平均加载时间约为150毫秒。用python 2.7表现很糟糕。非缓存页面需要2秒以上才能加载。缓存页面加载时间超过200毫秒。
不幸的是,我没有任何分析数据,我无法告诉python 2.7中究竟是什么减慢了。
页面加载时间的数字是从实时页面收集的,每页服务大约10 req / sec,1个常驻python25实例可以轻松处理此负载。
我还使用wsgi和threadsafe:yes
测试了python 2.7,但与python 2.7和cgi相比,性能提升了一点。
答案 0 :(得分:17)
Somewhere on Usenet我从Google那里读到了这样一句话:“在某些情况下,Python 2.7运行时比Python 2.5运行时慢,而在其他情况下则更快。我们现在还没有公开原因。”似乎到目前为止没有人发现2.7比2.5更快的情况......
我读到了这个
我的分析表明python 2.7多线程应用程序花费了大约。他们35%的时间都在{method 'acquire' of 'thread.lock' objects}
- 而且似乎是在谷歌的RPC代码中发生的。还有迹象表明导入存在严重的锁定问题。
除非等待AppEngine修复它,否则基本上你无能为力。另请参阅this comprehensive documentation有关减速的信息。
几乎肯定不会在这方面发挥重要作用的因素是:
丑陋的是,谷歌在两个步骤中进行了大规模的价格上涨,但告诉我们“通过使用多线程python 2.7,你可以运行更有效,新价格看起来不那么糟糕”。不幸的是Python 2.7。运行时仍然标记为“实验性”,并且不提供生产质量性能。
答案 1 :(得分:5)
Python 2.7支持仍然是实验性的。新的和实验性的一个方面是它没有Python 2.5具有的那种性能烘焙和调整。
答案 2 :(得分:3)
在python 2.7上运行时,您是否将应用程序迁移到使用WSGI而不是CGI?
CGI接口可能只是现在为2.7启用的WSGI的包装。
答案 3 :(得分:1)
通过切换到python2.7,我的应用程序在负载下的性能差了3倍。
用2.5:
连接时间(毫秒) 最小平均值[+/- sd]中位数最大值 连接:36 48 15.4 41 109 处理:685 3010 1893.3 2657 9255 等待:685 3009 1893.3 2656 9255 总计:725 3058 1900.5 2711 9333
在特定时间内(ms)提供的请求的百分比 50%2711 66%3287 75%3896 80%4521 90%6146 95%7078 98%7934 99%8413 100%9333(最长要求)
用2.7:
连接时间(毫秒) 最小平均值[+/- sd]中位数最大值 连接:35 46 11.4 41 96 处理:1076 7614 4190.5 6711 32284 等待:1075 7614 4190.5 6711 32283 总计:1124 7660 4195.5 6764 32353
在特定时间内(ms)提供的请求的百分比 50%6764 66%7790 75%8751 80%9392 90%10844 95%13139 98%25219 99%27259 100%32353(最长要求)
答案 4 :(得分:0)
谷歌本身的一句话
实验!
Python 2.7运行时是一个实验性的,创新的, 并迅速改变App Engine的新功能。不幸的是,存在 在前沿意味着我们可能会向后兼容 变化。一旦Python 2.7运行时,我们将通知社区 不再是实验性的。
它们还没有真正用于生产用途,它就像beta测试一样。
因此,请将您的应用程序保存在python2.7中,直到实验阶段结束。
您也可以尝试仅上传已编译的.pyc
文件,因为python27运行时支持bytecode upload
答案 5 :(得分:-1)
据我所知,Python 2.7应该比2.5快。但是,有一些因素会影响速度:
这是我提出的前三件事,但有很多因素。即使天气理论上 也会影响性能。