对于我的Appengine应用程序,Python2.7的性能比Python2.5差得多

对于我的Appengine应用程序,Python2.7的性能比Python2.5差得多,python,performance,google-app-engine,Python,Performance,Google App Engine,我发现py2.7线程化和py2.5在性能上有巨大差异。。py2.5的性能提高了2-4倍(取决于特定的服务器url调用),从而降低了延迟和cpu使用率(即在py2.5下运行同一台服务器的成本大大降低)。以下是一些统计数据。。看起来很奇怪,因为py2.7被宣传为更高效、更便宜。还有人看到这个吗?下面是几个显示性能的屏幕截图。。我正在比较各种服务器url调用的RuntimeMCyles和平均延迟,以确定性能。这两个版本之间的唯一区别是py25和py27,除此之外,我没有更改任何代码: 带螺纹的Py2.

我发现py2.7线程化和py2.5在性能上有巨大差异。。py2.5的性能提高了2-4倍(取决于特定的服务器url调用),从而降低了延迟和cpu使用率(即在py2.5下运行同一台服务器的成本大大降低)。以下是一些统计数据。。看起来很奇怪,因为py2.7被宣传为更高效、更便宜。还有人看到这个吗?下面是几个显示性能的屏幕截图。。我正在比较各种服务器url调用的RuntimeMCyles和平均延迟,以确定性能。这两个版本之间的唯一区别是py25和py27,除此之外,我没有更改任何代码:

带螺纹的Py2.7:

Py2.5(Py2.5服务器在这里运行的请求要少得多。但随着时间的推移,它会跟踪相同的请求,因此这是一个很好的表示):


您的问题听起来可能是由非线程安全的代码引起的

我会试着附上或附上这封信,看看这是否有助于解决这个问题


另外需要检查的是关于准备应用程序迁移到Python 2.7的简单指南。

您是否在
app.yaml
中设置了
threadsafe:true
?(假设您的应用程序确实是线程安全的。)很难直接比较线程2.7和2.5运行时。我所观察到的是,如果您有>100ms2.7的长请求,并且线程似乎总体上较慢。我想这是单个进程的产物,而应用程序不使用异步调用等。。。您还没有提到您的数据库是使用db还是ndb。您可能应该在不使用线程的情况下运行2.7,以查看2.5和2.7是否具有可比性。2.7线程似乎可以减少实例数量,但由于资源争用,不一定会加快速度。2.7线程将减少新实例启动的需要。这些可能会很慢,并且会降低性能。我有threadsafe:true。我正在使用NDB。我现在不太关心速度,更关心价格。使用2.7 threadsafe:True时,我当前的流量成本约为4美元,而使用py 2.5时,相同服务器的可比流量成本约为2.30美元。我可以使用threadsafe:False尝试2.7,看看会发生什么。顺便说一句,在这两种情况下,我都限制了调度程序,试图限制启动的实例数。