Назад | Перейти на главную страницу

Почему для mod_wsgi используются процессы двойного apache?

Я запускаю приложение Django с использованием mod_wsgi и пытаюсь понять, как работают процессы apache.

Вот мой apache httpd.conf:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com

    WSGIDaemonProcess example.com processes=2 threads=15 user=django1 group=django1
    WSGIProcessGroup example.com
    WSGIScriptAlias / /path/to/django.wsgi
</VirtualHost>

Я установил два процесса, но когда смотрю на top, Я вижу два процесса под пользователем django1 и еще два процесса под пользователем www-data:

PID   USER     VIRT RES  COMMAND
14035 django1  524m 350m apache2
14116 django1  499m 326m apache2
11800 root     347m 299m apache2
17486 www-data 347m 292m apache2
17689 www-data 347m 292m apache2

Зачем нужны эти процессы www-data? Я занимаюсь чем-то другим и не знаю об этом? Похоже, они зря тратят память. Только два процесса apache2 для пользователя django1 процессы показывают любую загрузку процессора. В www-data у пользователей нет загрузки процессора.

Когда вы используете режим демона и ваше приложение Django, следовательно, выполняется в отдельном процессе от основных процессов Apache, вам по-прежнему нужен родительский процесс Apache и хотя бы один дочерний процесс Apache. Последний - это то, что принимает запросы и передает их процессам демона mod_wsgi. Читать:

http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading