Gunicorn工作进程在请求后不释放内存

8

我有一个单一的gunicorn工作进程负责读取一个巨大的Excel文件,这个过程需要花费长达5分钟,并使用4GB的内存。但是,在请求完成处理之后,我发现在系统监视器中它仍然会永久地分配4GB的内存。你们有什么办法来释放这些内存吗?


5
没问题。如果它没有被积极使用,就会被替换掉;虚拟内存空间将保留分配状态,但其他东西将在物理内存中运行。许多分配器永远不会将内存释放回操作系统——它只会释放到一个池中,应用程序将从其中申请malloc(),未来也无需请求操作系统获取更多内存。 - Charles Duffy
我对是否将其标记为释放Python中的内存的副本存在分歧。无论它们是否是重复的,这肯定是一篇非常相关的文章。 - Charles Duffy
2个回答

7

谢谢你的好提示。我认为定期强制重启工作进程是个好主意。 ;) - chAlexey

-2

--max-requests 1 对于类似的情况对我有用。


3
每次请求后都会简单地重启一个工作进程。 - SergeiMinaev
如果您需要处理大量的数据,例如使用gunicorn进行机器学习预测,那么这将非常有帮助。 - Ahmad AlMughrabi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接