[Mongrel] Mongrel performing only half as fast as Apache?

Christopher Bailey chris at codeintensity.com
Tue Feb 27 19:48:25 EST 2007

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 <chris at codeintensity.com> 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?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/mongrel-users/attachments/20070227/fe0e762c/attachment.html 

More information about the Mongrel-users mailing list