Gunicorn: 服务运行时间长后内存增加

创建于 2018-10-10  ·  3评论  ·  资料来源: benoitc/gunicorn

你好 :
我使用flask + gunicorn 来做一个api 服务。 因为我想在工作处理器之间共享一个大数据,所以我在gunicorn.conf中初始化数据并使用“gunicorn -c gunicorn.conf”来完成它。 gunicorn.conf 中的任何数据只会执行一次,因此每个工作处理器共享一个公共大数据。 我的程序中的大数据只准备好了,没有写操作。 但是当我启动我的服务并运行很长时间时,有时内存突然增加了1G,我猜可能是gunicorn中的一些写操作导致系统的copy-on-write机制。 以及如何在工作处理器之间共享大数据? 我还是被这个问题搞糊涂了,期待你的回复!!! 谢谢!

最有用的评论

这与#1640 相关。

处理这个问题的唯一其他方法是做一些避免 Python 内存管理的事情。 也许mmap 模块可以提供帮助。

所有3条评论

这与#1640 相关。

处理这个问题的唯一其他方法是做一些避免 Python 内存管理的事情。 也许mmap 模块可以提供帮助。

谢谢!!! 这是非常有帮助的!

你好:
根据您提供的信息,我将 python 从 2.7 升级到 3.7 并使用 gc.freeze() 来避免垃圾收集器收集的某些对象。 这次并没有出现“内存突然增加1G”,而是导致内存增长缓慢,每个子处理器内存增加500M+,然后停止增长。 我认为 gc.freeze() 是有效的,并且会产生不同的内存外观。 我希望我所做的工作对其他人有帮助。 谢谢!

此页面是否有帮助?
0 / 5 - 0 等级