为什么mod_wsgi有双重apache进程?

为什么mod_wsgi有双重apache进程?

我正在使用 mod_wsgi 运行 Django 应用程序,并尝试了解 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-数据

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进程显示任何 CPU 负载。www-数据用户没有任何 CPU 负载。

答案1

当您使用守护进程模式时,您的 Django 应用程序将在与主 Apache 进程不同的进程中运行,您仍然需要 Apache 父进程和至少一个 Apache 子进程。后者负责接受请求并将其代理到 mod_wsgi 守护进程。请阅读:

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

相关内容