Hi, all,

I've been doing some quick and dirty shootouts running the Petstore
app from TW-commons RubyForge project.

The purpose of this exercise was not to draw any conclusions, but to
get a gut feel for the various factors that have significant impact on
performance of a Rails application running under JRuby.

Test procedure, in a nutshell was just repeatedly hitting a particular
page and measuring response rate. More details below.

I see a huge difference in favor of MRI so far. I am also a bit
surprised that AR-JDBC is slower than a pure-Ruby MySQL driver from
Rails.

Thoughts?

MRI / Mongrel / native mysql driver: 71 requests/sec
MRI / Mongrel / Rails mysql driver: 57 requests/sec
MRI / Webrick / native mysql driver: 52 requests/sec
MRI / Webrick / Rails mysql driver: 43 requests/sec

JRuby trunk / Mongrel / Rails mysql driver: 17 requests/sec
JRuby trunk / Mongrel / AR:JDBC:  14 requests/sec
JRuby trunk / Webrick / Rails mysql driver: 13 requests/sec
JRuby trunk / Webrick / AR:JDBC: 11 requests/sec

JRuby 1.0 / Mongrel / Rails mysql driver: 16 requests/sec
JRuby 1.0 / Mongrel / AR:JDBC: 14 requests/sec
JRuby 1.0 / Webrick / Rails mysql driver: 13 requests/sec
JRuby 1.0 / Webrick / AR:JDBC: 12 requests/sec

In all cases, even with MRI, performance is completely CPU-bound, with
the app using 97-99% of CPU, and MySQL only 1-2%.

System under test:

* Petstore: SVN rev 22 from http://tw-commons.rubyforge.org/svn/trunk/
* Mongrel-jruby: 1.0.1
* Mongrel: 1.0.1
* Rails MySQL driver: pure Ruby driver included in Rails 1.2.3
* native MySQL driver: 2.7
* ActiveRecord-JDBC: 0.4
* JDBC MySQL driver: MySQL Connector/J, packaged in Ubuntu as
libmysql-java 5.0.4+dfsg-2
* Ruby: ruby 1.8.5 (2007-03-13 patchlevel 35) [i686-linux]
* JRuby trunk: SVN rev 4183
* Java: build 1.6.0-b105
* MySQL: 5.0.38
* OS: Ubuntu 7.0 desktop
* Hardware: Dell Latitude D620 laptop

Test procedure:

* rake RAILS_ENV=production db:dataload (loads some small amount of test data)
* Start the app
* Warm up the JIT compiler:
  ab -c 1 -n 1000 http://localhost:3002/shop/viewProduct.shtml?product=K9-DL-01
* Test:
  ab -c 1 -n 100 http://localhost:3002/shop/viewProduct.shtml?product=K9-DL-01

-- 
Alexey Verkhovsky
CruiseControl.rb [http://cruisecontrolrb.thoughtworks.com]
RubyWorks [http://rubyworks.thoughtworks.com]

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to