2012-07-31 89 views
1

我们使用uwsgi + nginx构建网站。最近,我们想要改进我们网站的qps,所以我们决定将uwsgi模式从prefork切换到线程。但我们发现一些非常糟糕的事应用程序在uwsgi线程模式下运行缓慢

当使用prefork模式与工人设置5时,我们得到的请求时间是10-20ms。但在线程模式下(一个工人5个线程),该值增加到100-200ms。这太糟糕了。

我们发现memcache.Client占用了大部分时间,使请求时间增加。

请帮我知道问题出在哪里以及如何解决,谢谢!

PS: 代码: 进口的memcache 客户端= memcache.Client([ '127.0.0.1:11211']) client.get( '的myKey')

+0

请勿使用线程。这是GIL问题 试试我的变种 http://stackoverflow.com/a/14755343/1865653 – nnmware 2013-02-07 15:58:45

回答

0

您可能遇到蟒蛇GIL开销。尝试添加第二个过程以查看结果是否更好。

+0

我改变两个工人10个线程,问题仍然存在 – 2012-07-31 06:26:04

+0

preforking模式下,41倍的memcache查询时间21ms ,但在preforking +线程模式下,需要110ms。代码是一样的。 – 2012-07-31 06:32:54

+0

您正在使用哪个memcached模块?尝试使用pylibmc,因为它对GIL的管理比python-memcached好很多 – roberto 2012-08-01 05:47:15

相关问题