我有一个只有一个路由的小flask网络服务器。只要客户端不停止连接,连接就会保持打开状态,并将数据流式传输到客户端。我使用的是女服务员多线程,所以它不会阻塞。
现在问题来了。一段时间后,CPU使用率会上升到100%。在此期间,/admin.php收到了一些奇怪的请求,但他们都得到了404。在空闲或连接较少的情况下,我甚至看不到$ top下的python3。
为什么会这样?我能做些什么?
发布于 2020-10-06 13:17:10
当你使用Flask和waitress ( GIL问题)时,100%的使用率是针对一个核心的CPU (GIL问题) --单进程多线程,并且你的进程看起来主要不是基于CPU的,比如高IO,结果你看不到python进程使用CPU,但是队列在增加,并且在分配CPU之后,它开始对所有排队的线程进行上下文切换,并达到死锁竞争条件。我遇到了一个类似的问题,我搬到了Gunicorn类型的wsgi服务器,它能够在多处理器上运行它,并使用worker和worker类
https://stackoverflow.com/questions/62061456
复制相似问题