繁体   English   中英

在运行Python 2.7的Google App Engine中,获取Thread.Lock占用响应时间的50%

[英]Acquire Thread.Lock takes 50% of response time in Google App Engine running Python 2.7

我在GAE上使用python27,并希望减少应用程序的响应时间。

根据cPro​​file的说法,运行1.6M函数调用(似乎非常高)需要40秒钟(显然太长)。 我现在唯一能找到的线索是,“ {{thread.lock'object的method'acquire'acquire'}}”占了40多岁中的20岁。 (注意:在app.yaml中将threadsafe设置为false或true似乎没有太大影响。)

对我要去哪里或接下来要去哪里调查有任何想法吗? 我知道获取锁定所花费的大量时间可能只是症状而不是原因,但如果是这样,我如何找到根本原因? 在cProfile中为我的函数列出的所有其他时间和ncall似乎是合理的。

我还想知道这是否是由于GAE在2011年底使用2.7造成的性能问题:

作为参考,这是cProfile输出示例(删除了行):

Profile data:
1662549 function calls (1652247 primitive calls) in 39.545 seconds
Ordered by: cumulative time
ncalls  tottime  percall  cumtime  percall filename:lineno(function)
[lines removed]
10816   19.245    0.002   19.245    0.002 {method 'acquire' of 'thread.lock' objects}
[lines removed]

预先感谢您提供的任何帮助!

如果您的应用程序非常注重RPC(长时间调用数据存储区/ urlfetch / etc),那么您会发现在thread.lock.acquire()中花费了大量时间。

您可能需要在应用程序中启用AppStats ,并查看每个rpc需要多长时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM