Gunicorn 多个相同进程的内存使用率很高?

ren*_* ge 9 web-services nginx python-3.x gunicorn

我对 Gunicorn 的高内存使用率感到困惑。我正在运行的应用程序是一个用于自动图像识别的深度学习框架。

即使我将内存大小从 1GB 增加到 3GB 后,内存使用率仍持续徘徊在 67% 左右。更令人费解的是,该内存似乎被多个相同的 Gunicorn 进程使用,如下所示。我手动杀死了一些高内存使用率的进程,例如 PID 2004 和 1860,但它们不断地回来,并且 67% 的内存使用率仍然存在,有时甚至更高。结果,像cv2.imread这样的图像读取工具经常因为内存不足而无法处理大尺寸的图像。

$ ps aux --sort=-%mem

USER  PID  %CPU %MEM VSZ     RSS    TTY    STAT START   TIME COMMAND
user  2004  5.6 39.0 2304052 1201968 ?     S    17:33   0:08 /home/user/anaconda3/envs/project/bin/python /home/user/anaconda3/envs/project/bin/gunicorn --workers 2 --bind unix:/home/user/project-master/project.sock -m 007 wsgi:app
user  1860  2.5 38.6 2289024 1189396 ?     S    17:14   0:32 /home/user/anaconda3/envs/project/bin/python /home/user/anaconda3/envs/project/bin/gunicorn --workers 2 --bind unix:/home/user/project-master/project.sock -m 007 wsgi:app
user  1694  0.0  0.5  43620 17416 ?        Ss   17:14   0:00 /home/user/anaconda3/envs/project/bin/python /home/user/anaconda3/envs/project/bin/gunicorn --workers 2 --bind unix:/home/user/project-master/project.sock -m 007 wsgi:app
Run Code Online (Sandbox Code Playgroud)

我想知道 Gunicorn 服务的 Web 应用程序具有如此高的内存使用率是否正常?如果没有,我有什么办法可以修复它吗?谢谢!

小智 1

我曾经对某些图像遇到过同样的问题。

尝试删除这样的变量:

del img, otherVar
Run Code Online (Sandbox Code Playgroud)