I understand this was fixed here: https://github.com/web2py/pydal/releases/tag/v16.11
On Tuesday, 8 November 2016 15:07:37 UTC-6, Sukhmeet Toor wrote: > > Hi Massimo, > > Thanks for looking into this. I just ran a few tests and I can confirm > that the leak does repro on Mac OS X El Capitan (10.11.6 (15G1004)) with > the latest version of pyDAL (16.9) and the HEAD and latest tags for web2py > repo (https://github.com/web2py/web2py/releases). The leak did not repro > from the last pypi version of web2py (2.1.1). I ran the program I listed in > PyCharm on Mac OSX and watched the memory usage using htop installed on the > Mac using Homebrew. > > Here are the detailed results: > 1. pyDAL 16.9 > > from pydal import DAL > > def open_close_dal(): > sql = DAL() > sql.close() > > if __name__ == '__main__': > while True: > open_close_dal() > > > Memory usage at ~4 mins: 193M ( > https://www.dropbox.com/s/vj5v6hqya4mot2v/Screenshot%202016-11-08%2011.43.28.png?dl=0 > ) > Memory usage at ~11 mins: 432M ( > https://www.dropbox.com/s/hac3monmy134b8f/Screenshot%202016-11-08%2011.50.51.png?dl=0 > ) > > 2. web2py 2.1.1 (pip install web2py==2.1.1) > > from gluon import DAL > > def open_close_dal(): > sql = DAL() > sql.close() > > if __name__ == '__main__': > while True: > open_close_dal() > > > Memory usage at ~5 mins: 16.7M > (https://www.dropbox.com/s/yjy8vv7fy7i79b0/Screenshot%202016-11-08%2012.14.52.png?dl=0) > Memory usage at ~11 mins: 16.7M > (https://www.dropbox.com/s/49laoi3tk74qhvp/Screenshot%202016-11-08%2012.21.32.png?dl=0) > > 3. web2py cloned @latest tag from https://github.com/web2py/web2py.git and > copied the gluon directory to my project in PyCharm. > > from gluon import DAL > > def open_close_dal(): > sql = DAL() > sql.close() > > if __name__ == '__main__': > while True: > open_close_dal() > > > Memory usage at ~4 mins: 187M > (https://www.dropbox.com/s/5hx01xve1mpemg5/Screenshot%202016-11-08%2012.32.54.png?dl=0) > Memory usage at ~11 mins: 398M > (https://www.dropbox.com/s/wcnpz15cor4g698/Screenshot%202016-11-08%2012.40.32.png?dl=0) > > Thanks, > Sukhmeet > > > > On Monday, November 7, 2016 at 5:52:17 PM UTC-8, Massimo Di Pierro wrote: >> >> I run your code on a Mac and I was unable to reproduce the leak. I invite >> others to try with different OSes and DAL version. It will help debug it. >> >> On Monday, 7 November 2016 19:48:35 UTC-6, Massimo Di Pierro wrote: >>> >>> Thank you for your help. We will investigate.... >>> Any chance you can try if the leak exists with the DAL in web2py stable? >>> >>> On Friday, 4 November 2016 21:34:52 UTC-5, Sukhmeet Toor wrote: >>>> >>>> Hi web2py-users, >>>> >>>> I have an application that runs on CherryPy (v8.1.2) on Ubuntu (14.04.5 >>>> LTS) and python 2.7.6. I use standalone pyDAL (v16.09) to connect to my >>>> MySQL DB on AWS RDS. I'm seeing a constant memory leak on my servers which >>>> causes the process to use up 100% of RAM in a few hours and eventual die a >>>> painful death (no SWAP enabled; enabling SWAP pushes back certain death a >>>> little). >>>> >>>> I have managed to reproduce the leak with a very small loop that >>>> repeatedly opens and closes the DAL object. I confirmed that memory >>>> continues to grow using htop and will eventually end up using 100% of RAM. >>>> I thought it was an MySQL adapter specific problem but I was able to repro >>>> it with the default sqlite adapter as well. >>>> >>>> from pydal import DAL >>>> >>>> def open_close_dal(): >>>> sql = DAL() >>>> sql.close() >>>> >>>> if __name__ == '__main__': >>>> while True: >>>> open_close_dal() >>>> >>>> >>>> I read some really old threads on this issue that suggested calling >>>> sql._adapter.close() or sql._adapter.close_all_instances() or del sql but >>>> it doesn't seem to make a difference. I've tried tracking down the memory >>>> leak and managed to confirm that it is the guts of the DAL that are >>>> leaking. One iteration of the loop, with pympler.tracker enabled reports >>>> these objects created: >>>> >>>> >>>> types | # objects | total size >>>> ============================================ | =========== | ============ >>>> dict | 672 | 423.38 KB >>>> list | 3525 | 354.35 KB >>>> str | 2851 | 162.49 KB >>>> <class 'collections.OrderedDict | 129 | 135.02 KB >>>> code | 585 | 73.12 KB >>>> <class 'pydal.dialects.MetaDialect | 32 | 28.25 KB >>>> <class 'pydal.parsers.MetaParser | 17 | 15.01 KB >>>> type | 16 | 14.12 KB >>>> <class 'pydal.representers.MetaRepresenter | 16 | 14.12 KB >>>> tuple | 168 | 12.85 KB >>>> <class 'pydal.dialects.sqltype_for | 178 | 11.12 KB >>>> weakref | 89 | 7.65 KB >>>> int | 258 | 6.05 KB >>>> <class 'pydal.representers.for_type | 49 | 3.06 KB >>>> function (wrap) | 25 | 2.93 KB >>>> >>>> >>>> Is this a known issue? I've been pulling out my hair with this for a few >>>> days now and would love any insight into it. >>>> >>>> >>>> Thanks in advance, >>>> >>>> Sukhmeet >>>> >>>> >>>> p.s. Older threads on this topic, which no solution that worked for me: >>>> >>>> https://groups.google.com/forum/#!newtopic/web2py/web2py/hmsupVHdDHo >>>> >>>> http://stackoverflow.com/questions/5539722/standalone-web2py-dal-with-pyramid-requests-threads-and-memory >>>> >>>> >>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

