apache prefork / mod_wsgi порождает количество процессов, казалось бы, прошлую конфигурацию

в рабочей среде, где nginx обращается обратно к apache mpm-prefork / mod_wsgi, и вижу 90 дочерних процессов apache, когда я ожидаю, что 40 будет максимальным, как описано ниже. конфигурация / настройка ничего интересного:

  1. nginx – это обратное проксирование на apache через proxy_pass и обслуживание статических носителей
  2. 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 

я что-то упускаю?

Процессы daemon mod_wsgi будут представлять собой дочерние процессы сервера Apache, хотя они и не совпадают. Это связано с тем, что процессы-демоны mod_wsgi являются fork родительского процесса Apache, а не fork / exec. Другими словами, имя исполняемого файла не изменяется.

Чтобы иметь возможность отличать процессы демона mod_wsgi от обычных дочерних процессов сервера Apache, поставьте опцию «display-name» на WSGIDaemonProcess. Этот параметр позволяет вам переименовать процесс как видимый в выводе из программы «ps» и некоторых вариантах таких программ, как «верх». См. Документацию по директиве WSGIDaemonProcess на сайте mod_wsgi.

http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess

Возможно иметь больше процессов apache, чем экземпляры WSGI.

Измените apache MaxClients на 40, если вы хотите ограничить процессы apache.

Вы используете mod_wsgi в режиме демона, поэтому процессы mod_wsgi и процесс обработчика Apache независимы.

По вашей конфигурации сразу после запуска apache у вас есть:

  • 40 (процессы =) mod_wsgi запускаются в одно и то же время.
  • 20 (StartServers) Процессы обработчика Apache, которые могут быть автоматически уменьшены до 10 (MaxSpareServers), если нет входящей активности.

Затем при загрузке процессы обработчика Apache могут вырасти до 200 (MaxClients). Но число процессов mod_wsgi будет одинаковым – 40.

Мой совет – использовать рабочий рабочий день, чем Apache, обрабатывает только динамический контент. Это может помочь уменьшить потребление памяти и повысить масштабируемость.