我正在使用 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 守护进程。请阅读: