apache prefork/mod wsgi生成的进程计数似乎超过了配置

2024-06-17 10:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在运行nginx的生产环境中,我看到的是apache mpm prefork/mod_wsgi,我看到的是apache子进程9040,我认为最大值是40,如下所示。配置/设置并不令人兴奋:

  1. nginx通过proxy_pass反向代理到apache,并服务于静态媒体
  2. apache只提供动态请求

相关nginx配置:

worker_processes 15;

events {
    worker_connections  1024;
}

keepalive_timeout 10;

相关apache配置:

^{pr2}$

mod\u wsgi config,其中webapp是进程的名称:

WSGIDaemonProcess webapp user=www group=users threads=1 processes=40

我错过什么了吗?在


Tags: modwsgi代理环境进程apache静态nginx
3条回答

mod\uwsgi守护进程看起来是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

您正在守护程序模式下使用mod_wsgi,因此mod_wsgi进程和Apache处理程序进程是独立的。在

根据apache启动后的配置,您可以:

  • 40个(processes=)mod_wsgi进程同时启动。在
  • 20个(startserver)Apache处理程序进程,如果没有传入活动,可以自动减少到10个(MaxSpareServers)。在

然后在加载时,Apache处理程序进程可以增长到200个(MaxClients)。但是mod_wsgi进程计数将是相同的-40。在

我的建议是使用worker mpm,而不是Apache只处理动态内容。它可以帮助减少内存消耗和更好的可伸缩性。在

有可能拥有比WSGI实例更多的apache进程。在

如果要限制apache进程,请将apache的MaxClients更改为40。在

相关问题 更多 >