Python 带有gevent的uwsgi占用100%的CPU

Python 带有gevent的uwsgi占用100%的CPU,python,uwsgi,gevent,epoll,netstat,Python,Uwsgi,Gevent,Epoll,Netstat,我有一些web api服务器运行uwsgi和gevent,在8核机器上有16个进程。运行几天后,某些进程会占用100%的CPU 以下是uwsgi的关键选项 master = true processes = 16 enable-threads=false min-worker-lifetime = 0 gevent-early-monkey-patch=true gevent-monkey-patch=true module = server:app gevent = 60 所以我使用pyfl

我有一些web api服务器运行uwsgi和gevent,在8核机器上有16个进程。运行几天后,某些进程会占用100%的CPU

以下是uwsgi的关键选项

master = true
processes = 16
enable-threads=false
min-worker-lifetime = 0
gevent-early-monkey-patch=true
gevent-monkey-patch=true
module = server:app
gevent = 60
所以我使用pyflame来收集这个过程的数据。 结果令人困惑。77%的CPU空闲,其余的运行gevent.hub.hub.run[line:loop.run()]

然后我了解到系统调用也被计算为空闲。 所以我选择了PID,得到了重复的结果

epoll_wait(20, {{EPOLLIN, {u32=36, u64=30017526431780}}}, 64, 748) = 1
clock_gettime(CLOCK_MONOTONIC, {40805477, 200961138}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 200981886}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 201003573}) = 0
epoll_wait(20, {{EPOLLIN, {u32=36, u64=30017526431780}}}, 64, 748) = 1
clock_gettime(CLOCK_MONOTONIC, {40805477, 201073893}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 201093352}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 201123285}) = 0
epoll_wait(20, {{EPOLLIN, {u32=36, u64=30017526431780}}}, 64, 748) = 1
clock_gettime(CLOCK_MONOTONIC, {40805477, 201174492}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 201192491}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 201207349}) = 0
epoll_wait(20, {{EPOLLIN, {u32=36, u64=30017526431780}}}, 64, 748) = 1
clock_gettime(CLOCK_MONOTONIC, {40805477, 201259254}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 201279465}) = 0
clock_gettime(CLOCK_MONOTONIC, {40805477, 201301453}) = 0
我发现u32=36句柄是到dns服务器的udp连接。我把它打印出来,得到了

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
udp      472      0 local_ip:56273            remote_ip:domain         ESTABLISHED 26223/./uwsgi
Recv-Q保持在472,这看起来很奇怪。

进程似乎一直在循环调用epoll_wait,但没有来自kenel缓冲区的令牌数据


那么,我接下来应该检查什么?任何建议都将不胜感激。

Hmm。。看起来很奇怪,uwsgi的版本是什么?uwsgi的版本:2.0.14Hmm。。看起来很奇怪,uwsgi的版本是什么?uwsgi的版本:2.0.14