flask 在并发请求下,内存会逐渐上涨。
在启动的时候会声明一些全局变量,然后由定时任务发起请求更新这些全局变量,猜测是更新全局变量后造成内存泄漏。
就想问下,如何动态地去追踪这类内存泄漏
还有就是,如何在请求结束归还本次请求所占用的所有内存。
谢谢大佬们!
在启动的时候会声明一些全局变量,然后由定时任务发起请求更新这些全局变量,猜测是更新全局变量后造成内存泄漏。
就想问下,如何动态地去追踪这类内存泄漏
还有就是,如何在请求结束归还本次请求所占用的所有内存。
谢谢大佬们!

1 sagaxu Mar 4, 2022 via Android 设置 max_requests ,每处理 xx 个请求重启进程,能缓解内存泄露。每个请求结束后自动回收,只有 PHP 支持这个特性。 |
2 0ZXYDDu796nVCFxq Mar 4, 2022 via Android uwsgi 也可以设置 max requests 的 追踪内存使用 memory_profiler 之类的 |
4 sudoy Mar 4, 2022 gunicorn 设置 max_requests 就可以减少内存泄漏 https://docs.gunicorn.org/en/stable/settings.html#max-requests |
7 Brian1900 Mar 5, 2022 pu 只能重启进程?没更优雅的做法了吗?比如如何找出内存泄漏 |
8 sudoy Mar 5, 2022 @zcf0508 一些大的网站设置 max_requests = 500 ,max_requests_jitter = 200 ,这个具体要根据你的服务器配置来,因为 worker 重启的时候也是吃内存的。gunicorn 19.2 以后就引入 max_requests_jitter ,最好设置 max_requests_jitter ,不然所有 worker 同时重启会导致引发空档期,以下是一些相关文档: https://docs.gunicorn.org/en/stable/settings.html#max-requests https://linuxtut.com/en/2668a2243a5191bcdc78/ https://stackoverflow.com/questions/24655713/gunicorn-max-requests-for-production |