I understand that, but what I was trying to do was establish some baseline numbers so that I could ensure I was doing my testing properly. We actually already have Apache serving the static stuff. But by trying a static file with Mongrel, I had figured this could set a baseline and I could double check scaling up the number of mongrels to make sure my test methodology was correct, before going to Rails and complicating things.
My next step is replacing this with hitting a Rails view that has no DB query in it. So, essentially a static Rails view. In doing this, the performance is slower of course. Just moreso than I'd hoped for and of course by now we're way off from static Apache. If I hit a single Mongrel instance directly (no Apache), on a tiny page (almost empty actually), I get: ~54 req/sec ~105 req/sec with disabled sessions (not surprising given that right now it's set up to use the database for sessions (DB is running on same machine as this for the tests)) ~184 req/sec with disabled sessions and disabling AuthenticatedSystem. ~415 req/sec if the page is a cached page (basically the same speed as hitting an actual static page) So, I guess this is mostly a good lesson for me in the performance of the system. The only issue I'm really facing is that adding Mongrels doesn't seem to scale much, even by just bumping it up to 2. With the above test, in the case where I was getting about ~184 req/sec, if I double the rate and num-conns for httperf with now running 2 Mongrels, I can't get double the results, in fact, I can't even get 300 req/sec without errors (and yielding 208req/sec). On 2/27/07, Christos Zisopoulos <[EMAIL PROTECTED]> wrote:
Christopher, Mongrel is not meant to serve static files. It is meant to replace the FCGI part of doing Apache->FCGI->Ruby. Or WhateverBalancer->FCGI- >Ruby. As Ezra put its here, http://f8p.com/96ktde , "...it is horribly ineficient to serve static files with mongrel..." Most mongrel setups (ones with Apache) use mod_rewrite to server the static files through apache (including cached rails html files). Try this vhost template ( http://f8p.com/6d6i0s ) that uses mod_rewrite to serve static HTML through Apache. -christos On 28 Feb 2007, at 01:48, Christopher Bailey wrote: > As additional info, I ran the same kind of tests with Pen and Nginx > instead of Apache+mod_proxy_balancer, just to get an idea on that > aspect: > > Pen with 1 Mongrel: ~671 req/sec > Nginx with 1 Mongrel: ~612 req/sec > > So these at least show a smaller overhead for the load balancer > aspect. They also are more bare-minimum configured (I don't have > much experience with either of those, so just did the basic Pen > setup where you tell it what port to run on and the ports/domain > +port it's proxying). > > On 2/27/07, Christopher Bailey <[EMAIL PROTECTED]> wrote: I'm > trying to do some initial benchmarking of our setup, mainly just to > establish baselines. I'm essentially using the process Zed > outlines in a previous message: > http://rubyforge.org/pipermail/mongrel-users/2006-May/000200.html > > What I'm running into is that Mongrel appears only half as fast as > Apache when serving a small static HTML file. If I then add in > Apache with mod_proxy_balancer, going to a single Mongrel, it drops > down to nearly about a third of what pure static Apache will do. > This seems bogus to me, and I suspect I have either some > configuration problem, or something. My understanding from what > I've read is that Mongrel should be fairly close to Apache when > serving static content (at least not only 50% as fast). Is that > right as a generalization? > > Here's some info to back this up. > - Server: HP DL360 dual 3.0GHz Xeons, 4GB RAM, 10k RPM SCSI disks > - OS: Fedora Core 6, up to date as of a few days ago, kernel 2.6.18 > smp > - Apache 2.2.3, with mod_proxy_balancer (the RPM install) > - Mongrel 1.0.1, mongrel_cluster 0.2.1 > - ruby 1.8.5 (2006-12-04 patchlevel 2) > - serving a static HTML file from the Rails app's public directory > - Testing using an identical server, that sits above this one in > the rack, connected to a switch (so it's one hop) > - Using httperf for testing, with the following command: > httperf --server lab05 --port 80 --uri /mongrel_alive.html --num- > conns 10000 > The number of connections I vary to be near the 10 second mark... > > Here's the results: > > - Just Apache, num-conns=15000, ~1400 req/sec > - Direct to Mongrel on port 5000, num-conns=8000, ~740 req/sec > - Apache mod_proxy_balancer to a single Mongrel, num-conns=5000, > ~475 req/sec > > So, I'm incurring a massive penalty for the balancer/cluster > setup. In production we will be using hardware load balancers, but > even still, my understanding was that instead of a drop from 1400 > to 740, it should be somewhat closer (say at least over 1000). > > My configuration is what seems to be the usual thing documented say > in Rails Cookbook, on various blogs, and so on. I can post the > details if needed. > > What would folks suggest, or what comments do you have? > > > _______________________________________________ > Mongrel-users mailing list > Mongrel-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/mongrel-users _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users
_______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users