1

将 mod_wsgi 与 WSGIDaemonProcess 设置一起使用时,如何在 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 数据库。

但是,系统显示的 apache 进程远远超过 24 个(超过 30 个)。我预计如果我将 ServerLimit 设置为与 WSGIDaemonProcess 中的进程相同,它将以常数 24 运行。但是,似乎有一堆空闲进程正在运行,原因不明?

4

1 回答 1

4

ServerLimit 指令与 mod_wsgi 守护程序模式无关。WSGIDaemonProcess 的“进程”选项指定 mod_wsgi 将创建多少个守护进程。它是静态数字而不是动态数字,因此只需将其设置为您需要的数量。对于每个进程的线程数,将其设置为超过 'processes=3' 开始是没有意义的,因为您在 Apache 子工作进程中被限制为 24 个并发请求,这些请求将请求代理到 mod_wsgi 守护进程,所以不是可以处理比这更多的请求。

一般来说,如果你在内存受限的环境中运行,那么你不应该使用 prefork MPM,而是使用 worker MPM。是否有必须的原因,例如还需要运行 PHP 代码?如果不是,请更改使用的 MPM。

您还可以如何配置事情实际上取决于您的代码、响应时间和请求吞吐量,这些只有您自己知道。

于 2012-04-24T01:35:27.823 回答