Python 运行多个Django虚拟主机时,WSGIApplicationGroup的哪个值?
我在mod_wsgi下的同一Apache实例上运行多个Django站点。当前,我的apache.conf文件包含以下指令(未指定任何Python 运行多个Django虚拟主机时,WSGIApplicationGroup的哪个值?,python,django,apache,mod-wsgi,Python,Django,Apache,Mod Wsgi,我在mod_wsgi下的同一Apache实例上运行多个Django站点。当前,我的apache.conf文件包含以下指令(未指定任何WSGIApplicationGroup): 每当我需要重新加载站点时,我都会触摸/srv/www/mysite/wsgi.py,这会导致所有客户端明显冻结 阅读后,听起来我可以通过在WSGIScriptAlias指令中指定进程/应用程序组来摆脱“重新加载暂停”: WSGIDaemonProcess mysite \ display-name=mysit
WSGIApplicationGroup
):
每当我需要重新加载站点时,我都会触摸/srv/www/mysite/wsgi.py,这会导致所有客户端明显冻结
阅读后,听起来我可以通过在WSGIScriptAlias
指令中指定进程/应用程序组来摆脱“重新加载暂停”:
WSGIDaemonProcess mysite \
display-name=mysite \
threads=50 \
maximum-requests=10000 \
umask=0002 \
home=/srv/www/mysite \
python-path=/srv/www:/srv/src:/srv/venv/prod/lib/python2.7/site-packages \
python-eggs=/srv/.python-eggs
WSGIScriptAlias / /srv/www/mysite/wsgi.py \
process-group=mysite \
application-group=mysite
IIUC,我需要同时提供进程组=
和应用程序组=
,以便进行预加载
到目前为止,我找到的所有文档都使用应用程序组=%{GLOBAL}
,但这对于我的用例来说似乎是错误的,在我的用例中,每个虚拟主机都应该基于单个站点的设置.py
文件运行代码(正确吗?)
我是否应该使用预定义的%{RESOURCE}
变量而不是mysite
我可以在同一站点的http和https版本之间共享同一应用程序组吗?(我知道我不能对进程组这样做)。每个虚拟主机Django站点都应该使用一个单独的守护进程进程组,因此%{GLOBAL}的应用程序组是可以的,因为它强制在各自的进程组中使用主解释器上下文。它不在进程组之间共享 请注意,如果在站点负载较重的情况下重新启动,则预加载不一定会有太大帮助,因为仍然需要等待进程启动并加载应用程序 线程数=50看起来太多了。你得到了什么,你的平均响应时间是多少。每个进程使用3-5个线程并使用多个进程可以实现最佳性能。使用多个进程显然意味着使用更多内存,因为应用程序将有多个副本
最后,是的,建议将站点的HTTP和HTTPS版本委派给同一个守护进程进程组,除非您另有充分理由。在第一个VirtualHost中指定WSGIDaemonProcess,如Apache所示。在80/443对中的第二个中,没有WSGIDaemonProcess,并在其他VirtualHost上下文中引用命名的进程组。如果服务器名相同,则允许进行此操作。谢谢您提供的信息。对于完全生成的页面,我们的响应时间通常在300-600毫秒范围内。我们可以处理30 req/sec的持续负载,其突发时间是前者的两倍,只要持续时间不超过几秒钟。我们之所以使用单进程,是因为在尝试运行@4core/5GB时出现了内存问题。上周我把它翻了一番,所以也许是时候再看看这些参数了。web应用程序进程的实际内存大小是多少?确保您使用的是Apache2.4和mod_wsgi的最新版本。较旧的Apache 2.2在某些情况下存在内存使用问题,Apache 2.4解决了这些问题,但最新的mod_wsgi版本也进行了更改,以避免Apache 2.2和2.4中可能导致额外内存使用的问题。简而言之,不要使用Linux发行版附带的过时版本的Apache和mod_wsgi。web进程(n=17)的平均rss=97000(最大239000)和平均vsz=833000(最大113000)。我们使用的是默认的Ubuntu 12.04,但我正在考虑升级。我们的ISP在launchpad()上提出了一个问题,尽管这似乎集中在安全方面而不是性能上……n=17来自哪里?您的意思是说您有17个单独的Django实例,每个实例都在自己的mod_wsgi守护进程组中?您的配置仅显示单个mod_wsgi守护进程的默认值。或者您正在查看Apache子工作进程和mod_wsgi守护进程?FWIW,12.04版本的mod_wsgi在处理大文件上传和缓慢的HTTP客户端时会显示出内存使用过多。为什么使用最新版本很重要。Linux发行版不支持这种修复。至少我们的一个VirtualHost正在处理从手机上传照片的问题,所以我猜我们正在解决这个问题。我们在这台服务器上运行了17个不同的站点/虚拟主机,它们使用mod_wsgi(还有一些不使用mod_wsgi)。我对与
WSGIDaemonProcess
指令中设置的display name
匹配的行的ps gaux
输出进行计数/制表。我们将在周末后升级mod_wsgi(5月1日是劳动节,公众假期,所有人都休息)。
WSGIDaemonProcess mysite \
display-name=mysite \
threads=50 \
maximum-requests=10000 \
umask=0002 \
home=/srv/www/mysite \
python-path=/srv/www:/srv/src:/srv/venv/prod/lib/python2.7/site-packages \
python-eggs=/srv/.python-eggs
WSGIScriptAlias / /srv/www/mysite/wsgi.py \
process-group=mysite \
application-group=mysite