24 messages in com.googlegroups.pylons-discussRe: advice with configuration/scaling...
FromSent OnAttachments
SamDonaldson28 May 2008 13:27 
Jonathan Vanasco28 May 2008 14:04 
SamDonaldson28 May 2008 14:24 
Jonathan Vanasco28 May 2008 14:39 
SamDonaldson28 May 2008 15:11 
Jonathan Vanasco28 May 2008 16:47 
Paweł Stradomski28 May 2008 23:55 
Alex Marandon29 May 2008 00:43 
Alex Marandon29 May 2008 02:28 
Ian Bicking29 May 2008 09:04 
Graham Dumpleton29 May 2008 16:29 
Mike Orr29 May 2008 19:56 
Graham Dumpleton30 May 2008 00:49 
Alex Marandon30 May 2008 05:12 
Jonathan Vanasco30 May 2008 07:17 
Jonathan Vanasco30 May 2008 07:20 
Shannon -jj Behrens30 May 2008 11:03 
Shannon -jj Behrens30 May 2008 11:19 
Ben Bangert30 May 2008 12:03 
Jonathan Vanasco30 May 2008 12:27 
Cliff Wells30 May 2008 12:35 
Mike Orr30 May 2008 14:29 
askel31 May 2008 03:27 
SamDonaldson31 May 2008 16:33 
Subject:Re: advice with configuration/scaling a live Pylons app.
From:Alex Marandon (alex@gmail.com)
Date:05/29/2008 02:28:52 AM
List:com.googlegroups.pylons-discuss

2008/5/29 Alex Marandon <alex@gmail.com>:

2008/5/28 SamDonaldson <samo@gmail.com>:

Running ab benchmark tests revealed many requests were failing. Should I be starting MORE Paster processes to handle the load? Is this the right thing to do, or is the Paster (SCGI) process itself multi-threaded to handle such synchronous requests. Say the Paster process is doing some I/O (SQL query through sqlalchemy), would that process block and would other requests wait, or would they get serviced?

Hi Sam,

According to
http://wiki.pylonshq.com/display/pylonscookbook/Pylons+Execution+Analysis+0.9.6 paster is multithreaded. It should be easy to test. Hit a controller action that sleeps for 10 seconds and see if you can still make requests to other actions. I actually need to test for myself as soon as I get to work. As for why you get failed requests, I don't know.

class FooController(BaseController):

def bla(self): return 'Hello World! %s' % time.time()

def slow_bla(self): time.sleep(10) return 'Hello slow World!'

With something like that, manual testing works just fine (ie: I'm able to hit the action bla as many times as I want while the action slow_bla is still serving).

When testing with ab though, I do get failed requests, but I actually get even more failed requests with Apache/mod_wsgi.