On Mon, 26 Nov 2007 20:59:39 +0100
Bob Br [email protected] wrote:
I’m starting to benchmark my application and was wondering if this is
normal results / degradation when new layers are added.
Basically I was worried about the ~35% decline when it hits mongrel, and
the following 40% decline when it hits a blank rails app. Getting just
over a third of the theoretical max seems pretty awful when its just a
blank page.
What are your performance goals for the application in req/sec and
kbytes/sec.
Optimize to meet those after the application is working. A working
application can be made faster with more hardware, a non-working
application doesn’t do shit.
Reply rate [replies/s]: min 625.1 avg 653.0 max 687.0 stddev 31.4 (3
avg: 562
This seemes pathetic for an Apache config, and the wide range in your
averages says that your box sucks or your testing it over a crappy
connection.
I’m sorry Bob, but your poor little server just doesn’t cut it.
If you believe anything Brian McCallister says, he gets 18,0000 req/sec
out of his magical Apache stack (riiiiiiiiight).
http://programming.reddit.com/info/60pkl/comments/ he gets the
following:
Apache HTTPD minimal module which mod_hello_world just prints hello
world: 18,823.58
Apache HTTPD server-scoped mod_wombat mod_wombat handler: 17,856.76
Apache Tomcat JSP 5.5.20: 17,644.40
Jetty 6.1.1 JSP: 12,449.36
Mongrel HttpHandler, not Rails: 2,378.05
Now, those have to be the most bogus unbelievable numbers ever, but
let’s assume that they’re true and he’s getting 18k req/sec out of
Apache. What you should be asking (apart from how the fuck did he do
that without a giant cluster of machines):
- I’ve never seen Apache Tomcat approach a speed that close to a fine
tuned Apache server ever. If he’s got a Tomcat that goes as fast as
Apache, then why bother using Apache? Tomcat is about 75% of the code
and only uses like 200% of the RAM. Instead of piling everything
through Apache to Tomcat, cut out the middle man.
- If he’s got Wombat at near Apache Tomcat speeds, then again, why the
hell bother with Apache at all? This means you could again cut out the
middle man and potentially do your own similar server that’d be much
faster even.
- Jetty is known as lightning faster than Tomcat, but when did this
change? I fired up a Jetty and Tomcat on my laptop and Jetty was about
10% faster. What’d they do to their Tomcat that’s so much better?
- Consider Mongrel’s About 3000 lines of code and Apache is about 3
million I’ll take that as a win. But I’m sure Brian still has it
stuck in his head that no, Mongrel’s speed has nothing to do with Ruby’s
shitty GC, threads, and IO, but it’s all about his pet peeve dumbass
feature pipelined requests and keep-alives. 'Cause all those browsers
doing only 4 requests max per server per connection are totally using
his little magic hack keep-alive bullshit.
- Wait a minute, if JSP on Tomcat is that close to Apache, then WHAT THE
FUCK is every Java framework in the world doing? I bust out just a
simple page that uses a JSP, Hibernate, and Controller and I maybe get
10 req/sec without serious tunage. If Brian’s got some kickass cluster
going, then there’s no way he setup mongrel right for this test. He
probably put Mongrel on his laptop then put the apache on a 200x200
cluster with 300 gig per node and slapped the Tomcat on a 300 way Azul.
Finally, the big question to ask, since I’ve never seen a Tomcat beat
a well tuned Apache server on any similar hardware, is how’d they
cripple their apache to make it as slow as Tomcat?
(mongrel - gif image)
httperf --server=test --port=3000 --uri=/images/bg.gif --num-conns=8000
avg: 363
If that’s mongrel serving a file then that could be a good speed. 1/2
of your apache speed is actually rocking fast. It’s usually much less.
In fact, I’d seriously say that your measurement method is probably
wrong.
% = 64.5% of Potential Max
(mongrel - blank controller / index file, no global layout etc.)
httperf --server=test --port=3000 --uri=/test --num-conns=4000
avg: 210
Mongrel doesn’t have “controllers” so if this is a Rails action in a
controller then that’s not so bad compared to your apache performance.
If this is a mongrel handler then I’d say re-test as your measurements
are probably wrong.
Posted via http://www.ruby-forum.com/.
Why do people post anonymously? Seriously, that’s really irritating.
I’m sure Bob has a reason, but just come out and say who your are.
Nobody cares if Super Secret Microsoft Supported Company.com is using
Mongrel. Hell Oracle finally came clean.
BTW, they get 400 req/sec on a finely tuned JRuby setup. You should
have seen me laugh at that, especially since I can’t get a moderately
sized test suite to run in less than 10 minutes.
–
Zed A. Shaw