作为一名Python开发人员,我对mod_wsgi的工作原理有了一些了解,也就是说,它会为每个请求启动一个新的Python进程。 这不是说一个新的httpd进程,而是一个运行类似于httpd的进程
python /path/to/my/wsgi.py <param> <param>
我对守护进程模式的理解是,如果process = 1(缺省值),则使用具有15个线程的单个进程来处理请求。 但是,请求服务时,httpd进程会发生什么?
这里更大的问题是,在我的日志中,我看到多达30个消耗3G内存的httpd进程。 这可以表明什么? 请求与永不终止的代码? apache borking一个请求,永远不会完成它?
编辑
我ps aux'd httpdfind约22个进程。 当我停下来的时候,大多数人都在等待,但是一直在不停地印刷着以下内容:
select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout) wait4(-1, 0x7fff9d6990ec, WNOHANG|WSTOPPED, NULL) = 0
我看起来像SQL?
这是apacheconfiguration的一个小姐理解。 我假设mod_wsgi是作为一个守护进程运行的,当它运行在embedded式模式下时。 apache worker.c部分将进程数量设置为8,扩展为25,这就是为什么有这么多的备用进程。