我有一个django应用程序,它严重依赖于线程,无论我添加到WSGIDaemonProcess
多少进程或线程,我都注意到没有性能增加。
我在那里找不到是/否答案,我在想。难道mod_wsgi对每个请求都使用相同的解释器,所以我因为GIL限制而陷入瓶颈?
如果是这样,你会推荐一些其他方法来帮助我解决这个限制吗?
答案 0 :(得分:0)
对于典型配置,是的,所有请求都将在同一个子解释器中处理。
如果在同一过程的不同子解释器中,您仍然受到GIL的影响。
发布您的实际mod_wsgi配置以确认您已正确设置。
考虑尝试New Relic以找出真正的瓶颈所在。
观看我的PyCon US 2012关于发现瓶颈的演讲
答案 1 :(得分:-1)
简短回答:
没有
答案很长:
这种能够充分利用处理器的能力,即使在使用多线程时,也进一步增强了Apache使用多个进程来处理请求而不仅仅是单个进程的事实。因此,即使在特定流程中存在某些GIL争用,也不会阻止其他流程能够运行,因为GIL只是流程的本地流程,并且不会跨流程扩展。
引文:https://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
你没有给任何人提供足够的信息来推荐如何提高性能,但如果你真的用Python编写了一个线程繁重的程序,这是你的第一个错误。 您可以尝试使用Jython或IronPython,而不是在CPython上运行程序。但是它不适用于mod_wsgi,所以我们真的需要更多细节才能理解你想要做什么...