apache创建了多个进程

时间:2017-12-06 07:06:03

标签: django apache mod-wsgi

我使用mod wsgi在apache中运行django应用程序。从以下配置开始,我已将服务器限制设置为1.

00-mpm.conf

<IfModule worker.c>
    StartServers         1
    ServerLimit          1
    #MaxClients         300
    MinSpareThreads     25
    MaxSpareThreads     75
    ThreadsPerChild     25
    MaxRequestsPerChild  0
</IfModule>

一开始,apache运行一台服务器。但经过一段时间我正在检查它运行两个服务器。我在error.log

中收到以下错误
[mpm_worker:notice] [pid 46754:tid 139924109117568] AH00297: SIGUSR1 received.  Doing graceful restart.

如何确保只使用一台服务器运行apache。而不是重新启动。

1 个答案:

答案 0 :(得分:2)

Apache运行父进程,然后运行具有该配置的一个子工作进程。父进程的大小非常小,因为它所做的只是管理子进程进程并在它死亡时重新启动它等。请求只由子进程进程处理。所以你所看到的是正常的。

为什么要尝试将其限制为一个进程?如果要满足只能有一个进程的WSGI应用程序的某些要求,那么无论如何都不应该使用嵌入式模式。使用mod_wsgi的守护进程模式,在这种情况下,WSGI应用程序默认使用一个进程。

然后放回Apache MPM设置,然后使用:

WSGIRestrictEmbedded On

WSGIDaemonProcess myapp
WSGIScriptAlias / /some/path/myapp.wsgi process-group=myapp application-group=%{GLOBAL}

这将导致Apache父进程,但Apache需要接受和代理请求的许多子工作进程,以及运行子工作进程的WSGI应用程序的单个mod_wsgi守护程序进程代理请求。