在运行nginx的生产环境中反转回apache mpm-prefork / mod_wsgi,我看到 90 apache子进程,当我预计40将是最大值时,如下所示。配置/设置并不令人兴奋:
proxy_pass
反向代理apache,并提供静态媒体相关的nginx配置:
worker_processes 15;
events {
worker_connections 1024;
}
keepalive_timeout 10;
相关的apache配置:
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
StartServers 20
MinSpareServers 7
MaxSpareServers 10
MaxClients 200
MaxRequestsPerChild 0
</IfModule>
mod_wsgi config,其中webapp
是进程的名称:
WSGIDaemonProcess webapp user=www group=users threads=1 processes=40
我错过了什么吗?
答案 0 :(得分:10)
mod_wsgi守护进程似乎是Apache服务器子进程,即使它们不相同。这是因为mod_wsgi守护进程是Apache父进程的分支而不是fork / exec。换句话说,它们的可执行文件名称不会改变。
为了能够将mod_wsgi守护程序进程与普通Apache服务器子进程区分开来,请为WSGIDaemonProcess提供“display-name”选项。此选项允许您将进程重命名为'ps'程序输出中的可查看状态以及某些程序变体(如'top')。请参阅mod_wsgi站点上的WSGIDaemonProcess指令文档。
http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
答案 1 :(得分:0)
可能有比WSGI实例更多的apache进程。
如果要限制apache进程,请将apache的MaxClients更改为40。
答案 2 :(得分:0)
您在守护进程模式下使用mod_wsgi
,因此mod_wsgi
进程和Apache处理程序进程是独立的。
在apache启动后立即进行配置:
mod_wsgi
个进程同时启动。然后在加载时,Apache处理程序进程可以增长到200(MaxClients)。但是mod_wsgi
进程计数将是相同的 - 40。
我的建议是使用worker mpm而不是Apache只处理动态内容。它可以帮助减少内存消耗和更好的可伸缩性。