我有一个配置如下的wsgi应用程序:
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess myapp user=myuser threads=10 maximum-requests=10000
WSGIScriptAlias / /usr/local/myapp/wsgi.py
WSGIProcessGroup myapp
我希望看到我的应用程序的正在运行的流程...但是ps aux
或pstree
我看到没有子进程:
init─┬─apache2─┬─apache2
│ ├─2*[apache2───26*[{apache2}]]
│ ├─apache2───14*[{apache2}]
│ ├─apache2───12*[{apache2}]
│ └─apache2───16*[{apache2}]
我的wsgi是否以守护进程模式执行?我如何检查python进程的运行状况?
当尝试同时请求大量连接时(例如:来自单个网页的30个连续的ajax请求),我试图调试我的wsgi python应用程序(有时会出现内存故障)。
答案 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
。
示例:
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