gluon.main.wsgibase calls gluon.main.serve_controller, which calls gluon.compileapp.run_models_in, which executes the models.
Anthony On Sunday, February 1, 2015 at 4:18:05 AM UTC-5, Louis Amon wrote: > > I have a web2py server running on heroku. > > So far my server had little traffic, and Heroku being a cloud PaaS service > means they put processes to sleep if they're not used for a while. > > Because of that, I never really noticed that the memory signature of my > application was growing at every request until my server got put to sleep > due to inactivity (at night most often), and thus the memory was reset upon > restart. > > This is no longer the case, and now my server often becomes unavailable > due to memory quotas, which is a big issue on production. > > > I've been using several tools to track the memory usage of web2py, one of > which is the logs of Heroku itself, eg: > > 2015-02-01T09:01:46.965380+00:00 heroku[web.1]: source=web.1 dyno=heroku. > 28228261.c4fede81-d205-4dad-b07e-2ad6dcc49a0f sample#*memory_total=186.27MB > sample#memory_rss=180.75MB sample#memory_cache=5.52MB* > sample#memory_swap=0.00MB sample#memory_pgpgin=71767pages > sample#memory_pgpgout=24081pages > > As far as I can tell, the "memory_cache" signature is rather small and is > stable around 5MB (I don't use cache a lot on my website, precisely for > fear of memory leaks). > > Based on the documentation > <https://devcenter.heroku.com/articles/log-runtime-metrics>, "memory_rss" > on Heroku refers to: > >> >> - *Resident Memory* (memory_rss): The portion of the dyno’s memory >> (megabytes) held in RAM. >> >> This variable keeps growing at every request, seemingly regardless of > which page is accessed. > > You will find attached the memory chart of my app, taken from Heroku's > Metrics back-office : every vertical line is a hard reset I had to do > manually to prevent the app from exceeding quotas. The red zone is a server > downtime because of swap usage making requests to be served very very > slowly. > > > I've tried using the "memory_profiler" library to decorate some functions > in my code and try to track memory usage increase, but it is a very tedious > task and so far I haven't managed to find the root of my problem. > > > I suspect my issue to be in models since those are loaded on every > request, but I can't use memory_profiler on them since models aren't > natively encapsulated in any function. > > > Is there a function somewhere in Gluon that loads every model, and which I > could decorate to scope which model might have memory leaks ? > -- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.