apache 创建多个进程

apache creates more then one process

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

00-mpm.conf

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

开始使用一台服务器的 apache 运行s。但是过了一段时间,当我用两台服务器检查它 运行s 时。我在 error.log

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

如何确保只有一台服务器的 apache 运行。而且不重启。

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

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

所以放回 Apache MPM 设置然后使用:

WSGIRestrictEmbedded On

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

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