Gregory (Grisha) Trubetskoy
grisha at modpython.org
Fri May 16 12:07:27 EST 2003
The times listed below, are these averages of multiple iterations (e.g. 10000) or just a one time try? Anyway - it doesn't look like this is where the bottleneck is - you mentioned before that a page that took 2.2 seconds to load takes 23 seconds - that's almost 21 seconds of difference whereas below you have a slowdown of 0.8 secs. Grisha On Fri, 16 May 2003, Alex Turner wrote: > > It's very unlikely to be a network problem because both the database and > the web server are running on the same host. The timings that I took were > done by placing a start=time.time() at the top of the code section that > executes > the file, and a print time.time()-start at the end, so I'm fairly > convinced that these are accurate. I then placed more time tests around > other parts of the mechanism which allowed me to gauge how long each > segment of the run takes. I have found a serious flaw in my database > class, having corrected that though, I found something interesting: > > This is my init routine for by DBResult class: > > def __init__(self,query): > start=time.time() > self.query=query > self.counter=0; > self.lresults_l=self.query.getresult() > self.dresults_l=self.query.dictresult() > self.fresults_l=[] > > # Copy the indexed/dict values into fresults > for a in range(len(self.lresults_l)): > x=0 > self.fresults_l.append({}) > for b in self.lresults_l[a]: > self.fresults_l[a][x]=b > x=x+1 > > for b in self.dresults_l[a].keys(): > self.fresults_l[a][b]=self.dresults_l[a][b] > > print "Init time %f<br>\n" % (time.time()-start) > > It's not pretty, but it does show something wierd: > > inside apache this gives a time of: 0.178554 secs > outside apache this gives a time of: 0.093750 secs > > almost twice as fast. > > Maybe this is a pg module problem, I don't know, but it's certainly wierd! > > Alex Turner > NetEconomist > > On Tue, 13 May 2003, Jack Diederich wrote: > > > > > > > I'm pretty sure this is not a DNS problem. I can break down each loop > > > that calls the database, and it shows 0.7 seconds per row returning > > > instead of like 0.03 seconds. The dns servers are all configured > > > correctly for both forward and reverse lookups, and I do not have the same > > > problems in PHP (other the fact that PHP is crap compared to python - but > > > it's not this slow). > > > > Are you doing anything wierd like running apache or progres > > through inetd (so it has to start a new process for every > > request)? Or are you doing a new database connection for > > each row? > > > > If the identical python program takes 1/10th the time running > > stand-alone I think the DNS was one the right track - it must > > be a network related problem. > > > > You might also want to print to the resulting page the time > > the process took from start to finish. If the page is very > > complicated it might look slower even if it isn't. > > > > You can also try commenting out all the database calls and > > timing the stand alone and mod_python versions. That will > > at least allow you to narrow down the problem. Also consider > > using 'strace' on the stand alone and the apache version. > > Compare the system calls between the two to see if something > > pathological is happening in the mod_python case. > > > > -jack > > > > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python >
|