[mod_python] mod_python slowness

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
>



More information about the Mod_python mailing list