Yes that could be really a small problem with Rocket's threaded
implementation, not the GIL, which usually shows up
on higher concurrency loads.  Anyway that would be a point for Guido... :D


ciao,
mic

2010/7/23 mdipierro <mdipie...@cs.depaul.edu>

> I am not convinced this is a GIL problem. Why the lock after the 400
> errors only?
>
> On Jul 23, 9:18 am, Michele Comitini <michele.comit...@gmail.com>
> wrote:
> > Because of the GIL threads on CPython are problematic more than one could
> > think.  Googling "GIL python" gives an idea...
> > Not to start the war threading vs forking model in general, but the GIL
> will
> > not go away from van Rossum's
> > python implementation (no not even in 3.x), he rather suggests to stay
> out
> > of threading (and he means that in general).
> >
> > This is better clarified in this Guido's mail:
> >
> > http://mail.python.org/pipermail/python-3000/2007-May/007414.html
> >
> > ciao,
> > mic
> >
> > 2010/7/22 Timbo <tfarr...@owassobible.org>
> >
> > > OK, so it's a thread-starvation issue.  Let this be the interim fix
> > > for web2py.  I've got several busy days ahead of me so I'll put out a
> > > real fix for Rocket in the coming days.
> >
> > > -tim
> >
> > > On Jul 22, 11:39 am, Michael Ellis <michael.f.el...@gmail.com> wrote:
> > > > Much improved with suggested change.  Latencies for .js/.css files
> > > reduced
> > > > to 100-150 msec.  Thanks Tim!
> >
> > > > Cheers,
> > > > Mike
> >
> > > > On Thu, Jul 22, 2010 at 12:27 PM, Timbo <tfarr...@owassobible.org>
> > > wrote:
> > > > > Try one quick change for me please...rocket is constructed around
> line
> > > > > 655 in main.py
> >
> > > > > Add a parameter to the constructor call(s):  max_threads=0
> >
> > > > > Please let me know if that affects the problem.
> >
> > > > > -tim
> >
> > > > > On Jul 22, 10:34 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
> > > > > > I can reproduce the problem. I did on localhost with two
> different
> > > > > > browsers.
> > > > > > Using firebug I can see it takes 25seconds to download base.css
> (the
> > > > > > problem is not always with the same file).
> > > > > > While I did the test, I also monitored httpserver.log and I find
> that
> > > > > > it NEVER takes more than 1.2ms serve base.css.
> > > > > > This is what the log shows:
> >
> > > > > > ....
> > > > > > 127.0.0.1, 2010-07-22 10:16:38, GET,
> /michealellistest/static/images/
> > > > > > header.png, HTTP/1.1, 304, 0.000563
> > > > > > 127.0.0.1, 2010-07-22 10:16:38, GET, /favicon.ico, HTTP/1.1, 400,
> > > > > > 0.000631
> > > > > > 127.0.0.1, 2010-07-22 10:16:55, GET, /michealellistest/static/
> > > > > > base.css, HTTP/1.1, 304, 0.000791   #### locks firefox for 25secs
> > > > > > ....
> > > > > > 127.0.0.1, 2010-07-22 10:22:42, GET, /michealellistest/static/
> > > > > > jquery.timers-1.2.js, HTTP/1.1, 304, 0.000552
> > > > > > 127.0.0.1, 2010-07-22 10:22:42, GET, /favicon.ico, HTTP/1.1, 400,
> > > > > > 0.000497
> > > > > > 127.0.0.1, 2010-07-22 10:23:02, GET, /michealellistest/static/
> > > > > > superfish.js, HTTP/1.1, 304, 0.000914   #### locks chrome for
> 25secs
> >
> > > > > > Do you see the time gaps?
> >
> > > > > > There is a clear pattern. Under heavy load a request that results
> in
> > > a
> > > > > > HTTP 400 error locks Rocket.
> >
> > > > > > Notice that the logging is done by a wsgi application that calls
> > > > > > web2py wsgibase, i.e it time how long it takes web2py to receive
> the
> > > > > > request and send the response. The extra time must be spent
> inside
> > > the
> > > > > > web server.
> >
> > > > > > It is also important that the times showed in the logs are the
> actual
> > > > > > time when the data is being written in the logs. You can see
> firefox
> > > > > > waiting for base.css, the server waiting to log base.css and
> nothing
> > > > > > else is being printed during the wait, signifying that web2py is
> not
> > > > > > running any request.
> >
> > > > > > We need Tim! This is a problem.
> >
> > > > > > Massimo
> >
> > > > > > On Jul 22, 9:22 am, Michael Ellis <michael.f.el...@gmail.com>
> wrote:
> >
> > > > > > > I've isolated the problem but absolutely do not understand it.
>  I
> > > can
> > > > > > > reproduce it with a two-line change to web2py_ajax.html.   Will
> > > someone
> > > > > with
> > > > > > > the time and equipment please attempt to replicate  this as a
> > > sanity
> > > > > check?
> >
> > > > > > > Here's how:
> >
> > > > > > > In the welcome app's web2py_ajax.html, insert the following
> after
> > > line
> > > > > 3.
> >
> > >
> response.files.insert(3,URL(r=request,c='static',f='jquery.sparkline.js'))
> >
> > >
> response.files.insert(4,URL(r=request,c='static',f='jquery.timers-1.2.js'))
> >
> > > > > > > Copy the attached js files into welcome/static.  They should be
> the
> > > > > same as
> > > > > > > the versions available online.
> >
> > > > > > > To reproduce the problem, serve web2py on your LAN.  Open the
> > > welcome
> > > > > home
> > > > > > > page on two different machines.  One of them can be on the
> server.
> > > > >  Briskly
> > > > > > > reload the page 10 or more times on either machine then try to
> > > reload
> > > > > on the
> > > > > > > other.  In my setup, the delay is reliably 25 seconds from the
> time
> > > I
> > > > > make
> > > > > > > the last click on the first machine.
> >
> > > > > > > I'm able to reproduce this in FF, Chrome, and Safari using the
> > > latest
> > > > > web2py
> > > > > > > from trunk.  Haven't tried any other browsers yet.  As noted
> > > previously
> > > > > both
> > > > > > > machines are MacBooks running Snow Leopard.
> >
> > > > > > > Mike
> >
> > > > > > >  jquery.timers-1.2.js
> > > > > > > 4KViewDownload
> >
> > > > > > >  jquery.sparkline.js
> > > > > > > 62KViewDownload
>

Reply via email to