2017-09-27 44 views
1

我有一个web项目,使用nginx,uwsgi,web.py,nginx用于负载均衡,uwsgi用作web服务器,web.py是一个web框架uwsgi产生了很多奇怪的过程,就像失效的过程

我用这个通用的“/ 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“

这个通常意味着它会产生二十个程序接收请求,每个程序最多接收800个请求

as sho W下方是正常的过程

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

通常它工作正常,但是当服务器非常繁忙,许多请求需要很长的时间就会产生奇怪的过程,如下图所示奇怪的是过程:

sheng  23370  1 0 09:08 ?  00:00:00 /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 

,你会发现,这个进程的PID为23370,但它的父pid是1,它像一个倒闭process.However,其实这个过程中占用内存,并且不会收到任何请求

我曾希望生产20个正常流程接收请求,但现在,它处理更多然后80 starnge过程中,谁可以告诉我为什么,我能做些什么来解决这个问题

回答

0

我已经找到了原因

在我的Python项目,有时蟒蛇会用R来使一个科学计算

R是缓慢的,所以我的一个同事使用并行技术,R将叉一些子进程来计算

不幸的是,如果一个请求需要超过20秒,uwsgi会杀死pytho n进程,但由于原因不明,那些R分叉的子进程不会被杀死,它们只是奇怪的进程我看到的