flask 内存回收的问题,请教下各位大佬 - V2EX
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
MonTubasa

flask 内存回收的问题,请教下各位大佬

  •  
  •   MonTubasa Mar 4, 2022 5099 views
    This topic created in 1531 days ago, the information mentioned may be changed or developed.
    flask 在并发请求下,内存会逐渐上涨。

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

    谢谢大佬们!
    9 replies    2022-03-05 13:43:13 +08:00
    sagaxu
        1
    sagaxu  
       Mar 4, 2022 via Android
    设置 max_requests ,每处理 xx 个请求重启进程,能缓解内存泄露。每个请求结束后自动回收,只有 PHP 支持这个特性。
    0ZXYDDu796nVCFxq
        2
    0ZXYDDu796nVCFxq  
       Mar 4, 2022 via Android
    uwsgi 也可以设置 max requests 的
    追踪内存使用 memory_profiler 之类的
    MonTubasa
        3
    MonTubasa  
    OP
       Mar 4, 2022
    @sagaxu 因为是想调用 sklearn 的扩展,每次启动的时候会加载 20G 左右的 model 文件,重启不知道会不会时间很慢。我先试试
    sudoy
        4
    sudoy  
       Mar 4, 2022   1
    gunicorn 设置 max_requests 就可以减少内存泄漏
    https://docs.gunicorn.org/en/stable/settings.html#max-requests
    westoy
        5
    westoy  
       Mar 4, 2022
    @MonTubasa

    你这个该分离成后端服务, 就不该整合到 web 层里
    zcf0508
        6
    zcf0508  
       Mar 4, 2022
    我也遇到这个问题了

    感谢 @sudoy 的回答,不过我还想问下 max_requests 的值设多少比较合适呢?
    Brian1900
        7
    Brian1900  
       Mar 5, 2022
    pu 只能重启进程?没更优雅的做法了吗?比如如何找出内存泄漏
    sudoy
        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
    MonTubasa
        9
    MonTubasa  
    OP
       Mar 5, 2022
    @westoy 是以 web 的形式给其他服务调用,只是说调用的频次比较高
    About     Help     Advertise     Blog     API     FAQ     Solana     4487 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 80ms UTC 05:32 PVG 13:32 LAX 22:32 JFK 01:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86