Hi Fred. John (above) is just such friend with sql savvy :-) He's helped me remove a whole lot of the queries, with more clean-up to come. This clean-up has been responsible for lowering our RSS for sure.
I meant to also mention that our other site (services.showmedo.com) is a very simple TG site - that runs for weeks at a time at 20mb RSS between updates. It has basic logins, some graphing, some external url callbacks for logging - with 10s-100s of visitors per day. Ian. On Jan 2, 8:37 pm, "Fred Sells" <[EMAIL PROTECTED]> wrote: > I'm no SQLObject guru, but I would get somebody with some sql savvy to look > at your queries. I'm aware of 2 common tricks: > 1. minimize joins and just querie each table separately and put them > together yourself. > 2. Use a stored Querie the kind with "?" in it. > This advice came from an eBay DBA > > If your doing queries rather than updates, you can quickly create SQLObject > "like" objects using the DictionaryCursor and then passing that to a generic > constructor like > > class MyGenericObject: > def __init__(self, a_dict_from_the_query): > self.__dict__.update(a_dict_from_the_query) > > I really like SQLObject, but if you're just doing queries (where you have > the bottleneck) it may be overkill. > > -----Original Message----- > From: [email protected] [mailto:[EMAIL PROTECTED] > > Behalf Of [EMAIL PROTECTED] > Sent: Saturday, December 29, 2007 9:08 AM > To: TurboGears > Subject: [TurboGears] Re: RAM use/gotchas in tg apps? > > Hi Iain, recently I had some trouble with our showmedo.com and large > memory usage which we solved... > > We're using TG 1.0.1 (feb 2007), SQLObject, Genshi. Most of the site > is rendered on-the-fly and we knew nothing about SQLObject's > behaviour, so our sql queries aren't terribly tight, nor did we have > much SQL experience beforehand. > > Our biggest issue was having *lots* of SQLObject queries (e.g. 2000 > for a page) and using python logic to filter the results, and this was > happening on e.g. the RSS feeds which are called frequently. This > caused big CPU spikes per call and consistently growing memory usage. > Our RSS feeds get pinged every 4 seconds. You don't have to remind me > just how bad this bit of code was :-) > > Having solved these problems we tend to hover at 65mb RSS, previously > we'd reach 100mb every day and the process would be restarted by our > host. We generally get 8000 page views per day. I leave the process > up for a week inbetween site updates. > > My guess is that the constant and frequent SQL queries caused lots of > objects to be added to the heap which were only slowly being cleared, > hence the continuous growth in memory usage. Having removed many of > the queries we now have stable memory usage. > > I kept an eye on the garbage counter - import gc; print > len(gc.garbage) - and wired this into a stats page on the site, but we > never had any uncollected garbage. We did oscillate between 160k and > 200k objects in the python instance (via len(gc.get_objects()), and > this was clearly growing whilst we had our 'leak'. Forcing the > garbage collector to collect didn't reduce the RSS. > > My friend John gave me a hand debugging our memory usage, he wrote up > two blog entries based on some of our work which might help > others:http://psychicorigami.com/2007/10/27/a-little-sqlobject-performance-g...http://psychicorigami.com/2007/12/16/using-raw-sql-with-sqlobject-and... > g-the-object-y-goodness/ > > HTH, > Ian. > ps. I don't track the email on this account...use ian AT showmedo DOT > com for any personal correspondence. > > On Dec 24, 8:21 am, iain duncan <[EMAIL PROTECTED]> wrote: > > On Mon, 2007-24-12 at 00:19 -0800, iain duncan wrote: > > > > Hi folks, I'm clearly doing something wrong because my tg apps get all > > > bloated after they have been running a while. I'm wondering if anyone > > > can comment on gotchas they encountered with their apps in that regard. > > > I'm using CherryPy session variables, but I believe they are getting > > > deleted properly ( I could well be wrong there, will be investigating > > > that ). I also have some widgets instantiated in static space. Other > > > than that I'm confused, because I *know* they aren't getting hammered > > > with hits. Deployment is apache mod_proxy to the app with supervisord > > > keeping it up. > > > > One question, my superivor app was checking on the site by hitting a > > > method of the root controller once a minute. Could that be eating ram > > > from a keep-alive scenario? > > > FWIW, the apps seem to start at about 20megs and then after 10 minutes > > or so get up to 90! And when I checked on it after it had been running > > for days, it was at 130 megs. :/ > > > Thanks > > Iain --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/turbogears?hl=en -~----------~----~----~----~------~----~------~--~---

