I installed modwsgi 2.3 and apache worker MPM and performance improved
by 30% but CherryPy is still significantly faster.

On Jan 13, 10:58 pm, Jorge Vargas <jorge.var...@gmail.com> wrote:
> On Wed, Jan 14, 2009 at 12:54 AM, Jorge Vargas <jorge.var...@gmail.com> wrote:
> > On Tue, Jan 13, 2009 at 11:51 PM, Tycon <adie...@gmail.com> wrote:
>
> >> Im using Ubunto 8.04 LTS and running the test using ab -n 10000 -c 10
> >> to localhost, in order to focus on the request handling code in the
> >> server stack and remove or reduce the weight of all other application
> >> logic such as db access and page rendering. This is not supposed to be
> >> a realistic timing of a real world request, but a highlight of the
> >> differences in efficiency of different request handling stacks
> >> including network layer, HTTP and routing code.
>
> >> All software package veriosns I'm using are the versions supplied in
> >> the OFFICIAL repositores for the distribution. Pylons and cherrypy
> >> were installed using (non)easy-install so their version is the latest
> >> rather than a version tied to any official repository.
>
> >http://code.google.com/p/modwsgi/downloads/listdoesn't even lists 1.x anymore
> > as a note "official debian package" is 2.x
> >http://packages.debian.org/changelogs/pool/main/m/mod-wsgi/mod-wsgi_2...
>
> > now it seems ubuntu doesn't has a 2.0 package
> >http://packages.ubuntu.com/hardy/libapache2-mod-wsgi
>
> sorry I was looking at the wrong ubuntu version it does have a 2.3
> package as shown herehttp://packages.ubuntu.com/intrepid/libapache2-mod-wsgi
>
> but you are still running 1.3 as you posted above, so everything else
> still stands
>
> > so your "definitive" results are totally coerced by the fact that your
> > operating system is running outdated code for modwsgi,
>
> > in other words you are running the very last version of a software
> > with something that is almost 2 years old. And you expect us to
> > believe it's not bias?
>
> > lets run firefox 1.0 vs ie 7 today and see who is better, ummm wait
> > bad example. But we are talking about competent projects here.
>
> >> I'm running in a full VM (single core) so I'm pretty sure my results
> >> are correct:  CherryPy (started using "paster serve prodduction.ini")
> >> is twice as fast (1300 req/sec for "hello world") as Apache+modwsgi
> >> (650 req/sec). The only difference you may have is using worker MPM
> >> instead of pre-fork MPM, and newer versions of apche and modwsgi. In
> >> addition, apache is also logging the requests which is an additional
> >> overhead that pylons doesn't do in my configuration. But even so I
> >> doubt if Apache could match standalone pylons using CherryPy.
>
> >> On Jan 13, 8:36 pm, Graham Dumpleton <graham.dumple...@gmail.com>
> >> wrote:
> >>> On Jan 14, 3:10 pm, Tycon <adie...@gmail.com> wrote:
>
> >>> > Actually I have apache+modwsgi running flawlessly, and everything I
> >>> > said is based on meticulous performance benchmarking and theoretical
> >>> > profiling of deployment architectures.
>
> >>> > All benchmarks were performed on pylons full stack production mode,
> >>> > with debugging and logging turned off. The test was a simple "hello
> >>> > world" page with no template rendering, database access or other
> >>> > external links or references. Apache is prefork MPM v2.2.8 with
> >>> > modwsgi 1.3 using python 2.5.2.
>
> >>> Old version of mod_wsgi. If using daemon mode of mod_wsgi then 2.X is
> >>> somewhat faster.
>
> >>> Using embedded mode, prefork especially can stuff up benchmarking
> >>> because the burst in traffic will cause Apache to create lots of
> >>> additional child worker processes to handle load. Every one of those
> >>> then has to load application and that can kill machine performance
> >>> while occurring, interfering with benchmark results. As such, for
> >>> applications with high load cost, actually better to use daemon mode
> >>> with fixed number of processes and with worker MPM for Apache.
> >>> Stripping Apache of unused modules that take a lot of memory,
> >>> especially PHP, is also advisable.
>
> >>> > The benchmarks CLEARLY show that using a stand-alone app server is
> >>> > MUCH faster then using apache+modwsgi to serve a page (returned from
> >>> > the aforementioned "hello world" controller action). When using
> >>> > CherryPy as the HTTP server for pylons, the req/sec is almost twice as
> >>> > fast as apache+modwsgi. PasteHTTP is 15% slower than CherryPy but
> >>> > still much faster then Apache+modwsgi.
>
> >>> Generally contrary results on MacOSX, with both CherryPy and Paste
> >>> server running quite badly in comparison.
>
> >>> On Ubuntu CherryPy runs about the same and Paste server slower.
>
> >>> What operating system are you using?
>
> >>> Did your tests take into consideration that Apache/mod_wsgi lazy loads
> >>> application object on first request where as the others preload. This
> >>> in part plays into why benchmarking results can look bad with Apache/
> >>> mod_wsgi, people are actually counting startup costs when they
> >>> shouldn't.
>
> >>> Graham
>
> >>> > But of course using a stand-alone app-server as the web-server has a
> >>> > few drawbacks:
>
> >>> > 1. Static files are also served by pylons, which is slow.
> >>> > 2. Cannot use multiple processes, which is required to make optimal
> >>> > use of system resources and allow for scalability across multiple CPUs
> >>> > and multiple machines.
>
> >>> > So in most cases you will want to have a reverse proxy front-end that
> >>> > acts as a load balancer as well as serve the static files. As you
> >>> > mention, nginx is a good choice. In this configuration, I would assume
> >>> > it would be better to have nginx forward the requests directly to a
> >>> > pool of standalone pylons app-servers, rather than to a pool of apache
> >>> > +modwsgi processes.
>
> >>> > So, while using only standalone CherryPy to serve a pylons app has
> >>> > some drawbacks, those drawbacks are avoided if using reverse proxy
> >>> > that serves as a load balancer and to serve static files.
>
> >>> > So when is it best to use apache+modwsgi ? If we have a single node
> >>> > with mutiple cores and a lot of RAM, and we need to serve a lot of
> >>> > static files, then apache+modwsgi would be better than using a
> >>> > standalone app server. But even for this scenario, nginx as a reverse
> >>> > proxy gives about the same performance.
>
> >>> > On Jan 13, 5:53 pm, Graham Dumpleton <graham.dumple...@gmail.com>
> >>> > wrote:
>
> >>> > > On Jan 14, 10:42 am, "Mike Orr" <sluggos...@gmail.com> wrote:
>
> >>> > > > On Tue, Jan 13, 2009 at 6:52 AM, Tycon <adie...@gmail.com> wrote:
> >>> > > > > Last word on modwsgi and its "daemon" mode, which is similar to
> >>> > > > > reverse proxy and fcgi in that it separates the web server and app
> >>> > > > > server. As such, it has the same theoretical performance as 
> >>> > > > > reverse
> >>> > > > > proxy and fcgi (which in fact provide the same performance), but 
> >>> > > > > it
> >>> > > > > uses a proprietary communication protocol, and inlike proxy or 
> >>> > > > > fcgi,
> >>> > > > > it requires the app and web server processes to be on the same 
> >>> > > > > machine
>
> >>> > > > Is *that* what you're talking about when you say "daemon mode" and
> >>> > > > "proprietary protocol".  I thought you meant daemon mode as in 
> >>> > > > running
> >>> > > > PasteHTTPServer or CherryPy as a daemon, and proprietary protocol as
> >>> > > > in WSGI or SCGI.
>
> >>> > > > The main point of mod_wsgi's daemon mode is to isolate bugs/memory
> >>> > > > leaks between the web application and the server, and to track the
> >>> > > > application's individual resource usage in the 'ps' listing.  It's 
> >>> > > > not
> >>> > > > designed for multi-machine scalability.
>
> >>> > > > As for its "proprietary" protocol, I consider that an internal 
> >>> > > > matter
> >>> > > > of mod_wsgi.  What matters is whether it works, and I haven't heard
> >>> > > > any complaints in that regard.
>
> >>> > > > Ultimately it comes down to the sysadmin's time of setting up 
> >>> > > > mod_wsgi
> >>> > > > now and possibly switching to something else later, vs setting up
> >>> > > > something multi-machine scalable now (which is more work up front).
> >>> > > > And that depends on how likely a traffic onslaught is, how quickly 
> >>> > > > the
> >>> > > > load will accelerate, and the sysadmin's future availability.
>
> >>> > > You don't need to switch to something else when you want to go to a
> >>> > > multi machine configuration. This is just part of the FUD that they
> >>> > > were pushing on the irc channels in the past to try and discredit
> >>> > > Apache/mod_wsgi. It just seems that Tycon is parroting this same
> >>> > > message. I wouldn't be surprised if he has never even used Apache/
> >>> > > mod_wsgi. Certainly the originator of a lot of this FUD on the irc
> >>> > > channels in the past freely admitted he had installed neither
> >>> > > mod_python or mod_wsgi with Apache.
>
> >>> > > When you want to start looking at horizontal scaling you do exactly
> >>> > > what you would do were you scaling up Apache for any other scenario.
> >>> > > That is, you stick perbal, pound, nginx or some other proxying/load
> >>> > > balancing solution in front and run an Apache instance of each of the
> >>> > > machines in your cluster.
>
> >>> > > Since running nginx in front of Apache/mod_wsgi to handle static files
> >>> > > is a common scenario, that same nginx instance could be used for the
> >>> > > job, given that it still likely going to handle the load of both
> >>> > > static files and proxying fine because of being event driven rather
> >>> > > than threaded.
>
> >>> > > Hmmm, this sounds exactly like what is because suggested if using
> >>> > > paste server or cherrypy wsgi server. Strange that.
>
> >>> > > When you read this persons other posts I think it is quite clear that
> >>> > > he doesn't really understand the difference between the WSGI
> >>> > > specification and mod_wsgi as an implementation of it. Specifically
> >>> > > that WSGI is a programmatic API and not a wire protocol. It is also
> >>> > > questionable how much he knows how to setup Apache and mod_wsgi.
> >>> > > Probably will never see anything about how they actually...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to pylons-discuss@googlegroups.com
To unsubscribe from this group, send email to 
pylons-discuss+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to