【发布时间】:2018-03-08 09:28:29
【问题描述】:
我有一个web项目,使用nginx,uwsgi,web.py,nginx用于负载均衡,uwsgi用作web服务器,web.py是web框架
我用这个command开始它“/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"
这个command表示它将产生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
一般情况下可以正常工作,但是当服务器很忙,很多请求需要很长时间的时候就会产生奇怪的过程,如下图所示是奇怪的过程:
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,就像一个已经死掉的进程。然而,事实上,这个进程占用了内存,不会收到任何请求
我本来希望产生20个正常的进程来接收请求,但是现在它处理了80多个starnge进程,谁能告诉我为什么以及我可以做些什么来解决这个问题
【问题讨论】: