官方appengine文档说如果我们在app.yaml中将threadsafe属性设置为true,那么appengine将服务器并发请求。
官方链接: https://developers.google.com/appengine/docs/python/python27/newin27#Concurrent_Requests
如果我们将threadsafe属性设置为true,是否意味着应用程序会更快(超过2.5)?官方文档/博客说明了这一点,但我正在寻找真实的世界经验。
在高级别,内部如何运作?我们的应用程序是否会被初始化并为每个请求产生一个新的应用程序?
答案 0 :(得分:10)
每个请求仍然只有一个帖子 - 你不能产生。
关闭线程安全,Appengine只会将一个请求路由到一个实例。因此,如果处理请求的时间每秒的请求数接近1,则Appengine将启动一个新实例来处理它们。这要花钱。启用线程安全后,Appengine可以将多个请求路由到实例。
这是否对您有所帮助取决于您的应用和流量:
简单的规则是切换线程安全,除非你的应用程序非常耗费处理(很少API等待)。
答案 1 :(得分:4)
答案 2 :(得分:3)
Python 2.5在每个请求的基础上仍然比Python 2.7快一点。这部分是由于每个人的成熟程度。 App Engine使用不同的机制来支持它们中的每一个。使用Python 2.7的胜利是它能够支持并行请求,而不是以Python 2.5处理负载峰值所需的速率启动新实例。
“内部如何运作”问题是你可能不会在这里得到答案的问题,但是过去一年的谷歌I / O中有一些暗示我们做什么以及为什么做的事情。在youtube.com上搜索“app engine”。
答案 3 :(得分:0)
我在这里添加答案,因为我们当前的实际结果与我们的期望相反。
在持续性能下降后,我们尝试将我们的(Python)应用程序切换回NON-threadsafe模式,并且非常惊讶地看到我们的性能提高了大约10倍。所以我们把它关掉了。我们的GAE支持团队无法解释这是怎么回事。我们最后一次分析时,我们对数据存储区进行了很大的I / O操作,理论上应该从多线程中获得很大提升。
因此,根据我们的经验......不仅不假设线程安全会更快,而且可能会慢得多。如果有人知道这是怎么回事,请分享。