在将WS_ID与WSGIDaemonProcess设置一起使用mod_wsgi时,如何在Apache中生成特定数量的进程?
我的VirtualHost设置如下(作为测试):
WSGIDaemonProcess webserver user=webserver group=webserver processes=24 threads=8 display-name=%{GROUP} python-path=/var/virtualenv/lib/python2.6/site-packages
虽然我的httpd.conf设置如下:
<IfModule prefork.c>
StartServers 8
MinSpareServers 1
MaxSpareServers 8
ServerLimit 24
MaxClients 24
MaxRequestsPerChild 4000
</IfModule>
请注意,我正在运行一个非常受限制的256MB服务器,并安装了PostgreSQL数据库。
然而,系统显示了超过24个apache进程(超过30个)。我希望如果我将ServerLimit设置为与WSGIDaemonProcess中的进程相同,它将以常量24运行。但是,似乎有一堆备用进程因未知原因而运行?
答案 0 :(得分:4)
ServerLimit指令与mod_wsgi守护进程模式无关。 WSGIDaemonProcess的'processes'选项指定mod_wsgi将创建多少个守护进程。它是静态数字而不是动态数字,因此只需将其设置为您需要的数量即可。对于每个进程的那个线程数,没有必要将它设置为更多'processes = 3'开始,因为你只限于Apache子工作进程中的24个并发请求,这些请求代理对mod_wsgi守护进程的请求,所以没有可以处理比这更多的请求。
通常,如果您在内存受限的环境中运行,那么您不应该使用prefork MPM而是使用worker MPM。你必须有一个理由,比如需要运行PHP代码吗?如果没有,请更改使用的MPM。
你能如何配置其他东西真的取决于你的代码,响应时间和请求吞吐量,只有你知道。