uwsgi产生了很多奇怪的过程,就像已经失效的过程一样

2024-04-26 23:46:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网络项目,使用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进程,谁能告诉我为什么以及我能做些什么来解决这个问题


Tags: py服务器logweb网页homeserver进程
1条回答
网友
1楼 · 发布于 2024-04-26 23:46:41

我已经找到原因了

在我的python项目中,有时python会使用R进行科学计算

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

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

相关问题 更多 >