为什么我没有看到mod_wsgi的进程

时间:2014-07-11 07:26:26

标签: python django mod-wsgi

我有一个配置如下的wsgi应用程序:

WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess myapp user=myuser threads=10 maximum-requests=10000
WSGIScriptAlias / /usr/local/myapp/wsgi.py
WSGIProcessGroup myapp

我希望看到我的应用程序的正在运行的流程...但是ps auxpstree我看到没有子进程:

init─┬─apache2─┬─apache2
     │         ├─2*[apache2───26*[{apache2}]]
     │         ├─apache2───14*[{apache2}]
     │         ├─apache2───12*[{apache2}]
     │         └─apache2───16*[{apache2}]

我的wsgi是否以守护进程模式执行?我如何检查python进程的运行状况?

当尝试同时请求大量连接时(例如:来自单个网页的30个连续的ajax请求),我试图调试我的wsgi python应用程序(有时会出现内存故障)。

1 个答案:

答案 0 :(得分:1)

为了完整起见,我正在扩大Mikko Ohtamaa的评论。

mod_wsgi进程名称确实采用父进程的名称,例如。 /usr/sbin/apache2 -k start取决于发行版等。

使用display-name选项可以设置不同的进程名称:

  

使用ps命令列出进程时,为守护进程定义要显示的其他名称。如果值为%{GROUP},则名称将为(wsgi:group),其中group将替换为守护程序进程组的名称。

     

请注意,只能提供与执行过程的argv0最初占用的所提供值一样多的字符。任何超出此范围的内容都将被截断。

     

此功能可能无法在所有平台上执行。通常它还需要具有BSD传统的ps程序。因此,在某些版本的Solaris UNIX上,/usr/bin/ps程序不起作用,但/usr/ucb/ps会起作用。可以显示此值的其他程序包括htop

Reference

示例:

WSGIDaemonProcess myapp user=myuser threads=10 maximum-requests=10000 display-name=django-myapp
WSGIScriptAlias / /usr/local/myapp/wsgi.py
WSGIProcessGroup myapp

然后:

ps aux | grep django-myapp