如何减少 Python/Django 项目的内存消耗 (RAM)?
How to reduce memory consumption (RAM) on Python/Django project?
我在 Django DRF API 项目上的内存使用量随着时间的推移而增加,一旦我达到 50+ API 次调用,RAM 就会被填满。
到目前为止我试过了
- 加载所有模型,class预先变量
- 已使用 memory profiler,尽可能清理代码以减少变量使用
- 添加 garbage collection : gc.disable() 在开头和 gc.enable() 在代码结尾
- 在代码末尾添加了 ctypes malloc.trim() 等等
- 设置gunicorn 最大请求限制(这会导致当时更多的模型加载/响应时间)
关于如何在每个请求结束时释放内存有什么建议吗?
由于 CPython 解释器管理内存的方式,它很少实际释放任何分配的内存。通常,CPython 进程的内存使用量会不断增长
由于您使用的是 Gunicorn,因此您可以设置 max_requests
设置,这将定期重启您的工作程序并缓解一些“内存泄漏”问题
我在 Django DRF API 项目上的内存使用量随着时间的推移而增加,一旦我达到 50+ API 次调用,RAM 就会被填满。
到目前为止我试过了
- 加载所有模型,class预先变量
- 已使用 memory profiler,尽可能清理代码以减少变量使用
- 添加 garbage collection : gc.disable() 在开头和 gc.enable() 在代码结尾
- 在代码末尾添加了 ctypes malloc.trim() 等等
- 设置gunicorn 最大请求限制(这会导致当时更多的模型加载/响应时间)
关于如何在每个请求结束时释放内存有什么建议吗?
由于 CPython 解释器管理内存的方式,它很少实际释放任何分配的内存。通常,CPython 进程的内存使用量会不断增长
由于您使用的是 Gunicorn,因此您可以设置 max_requests
设置,这将定期重启您的工作程序并缓解一些“内存泄漏”问题