我有一个网络项目,使用nginx,uwsgi,网页.py,nginx用于负载平衡,uwsgi用作web服务器,网页.py是一个web框架
我从这个commond“/usr/local/bin/uwsgi-d/home/sheng/www/lr server/./log/lr server”开始/uwsgi.log文件-s 127.0.0.1:8666-w rc_main-t 20-M-p 20--pidfile/home/sheng/www/lr server/主控pid--启用线程-R 800“
这个commond意味着它将产生20个进程来接收请求,每个进程最多接收800个请求
如下所示为正常过程
sheng 12414 15051 21 10:04 ? 00:01:45 /usr/local/bin/uwsgi -d /home/sheng/www/lr-server/../log/lr-server/uwsgi.log -s 127.0.0.1:8666 -w rc_main -t 20 -M -p 20 --pidfile /home/sheng/www/lr-server/master.pid --enable-threads -R 800
15051是父pid
通常正常工作,但当服务器很忙,很多请求耗时较长时,会产生奇怪的进程,如下所示为奇怪进程:
^{pr2}$您会注意到,这个进程的pid是23370,但它的父pid是1,它就像一个失效的过程。但是,实际上,此进程占用内存,不会接收任何请求
我本来希望产生20个正常的流程来接收请求,但是现在,它处理了80多个starnge进程,谁能告诉我为什么以及我能做些什么来解决这个问题
我已经找到原因了
在我的python项目中,有时python会使用R进行科学计算
R是慢的,所以我的一个同事使用并行技术,R会分叉一些子进程来计算
不幸的是,如果一个请求超过20秒,uwsgi会杀死python进程,但由于未知原因,R分叉的那些子进程不会被杀死,它们只是我看到的奇怪进程
相关问题 更多 >
编程相关推荐