Mix President’s Day Release: JRuby 1.1RC2 and a bunch of other stuff!

February 17th, 2008 14 Comments

imbloggingthis.pngSince U.S. based Oracle employees don’t get President’s Day off, Anthony and I decided to deploy some new changes while everyone is off enjoying their day off.  Actually, that’s not true, we deployed the new Mix changes early Sunday morning.  What should have taken 10 minutes lasted 2 hours — it was a big release.

We applied a ton of goodness on this latest update.  Under the hood, we upgraded to JRuby 1.1RC2 (which was just recently released (on Saturday!) — yeah, we’re blazing trails here.  We also upgraded a bunch of underlying libraries like ActiveRecord-JDBC, JREXML, Goldspike and a few others.  The JRuby 1.1RC2 upgrade was a big boost in performance.  Last week, I spent some time running some Apache Bench tests on my MacBook Pro (2.4 GHz/4Gb mem) and saw some AMAZING numbers.  Here’s a summary:

After running Apache Bench with 1000 requests (for my profile page) with a concurrency level of 100 (ab -n 1000 -c 100), I get these numbers:

Server Software:        Oracle
Server Hostname:        localhost
Server Port:            8888Document Path: /user_profiles/10023-rich-manalang
Document Length:        100 bytes

Concurrency Level:      100
Time taken for tests:   8.920769 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Non-2xx responses:      1000
Total transferred:      549000 bytes
HTML transferred:       100000 bytes
Requests per second:    112.10 [#/sec] (mean)
Time per request:       892.077 [ms] (mean)
Time per request:       8.921 [ms] (mean, across all concurrent requests)
Transfer rate:          60.08 [Kbytes/sec] received

One thing to remember with these numbers… I ran this test on my laptop. Yes, I know what you’re saying… my laptop kicks your laptop’s arse. Regardless, these numbers look very good — here are a different set of stats for comparison.  For those interested, my Rails app was configured with the Goldspike default of 4 JRuby processes max-active and 2 min-idle.  I ran these against Oracle OC4J 10g, but the numbers look the same with Jetty and Glassfish. Charles Nutter one of the guys behind JRuby has a great write up on what’s next for JRuby.  It’s a great read if you’re considering JRuby for your next project.

Ok… so, for those who don’t care about the guts that run Mix, here’s a list of the other changes we’ve applied:

We’re not stopping there.  Justin K and his crew have lots of features they want… so, we’ll be busy with that and lots of other enhancements in the next few weeks.  If you haven’t done so, get in the Mix. Oh, and if you have a feature you absolutely want, sound off in the comments or, better yet, put in an idea in the Mix group.


Possibly Related Posts

14 Responses to “Mix President’s Day Release: JRuby 1.1RC2 and a bunch of other stuff!”

  1. Ruby Galore - Daily Top Blog Posts on Ruby on Rails - Powered by SocialRank Says:

    JRuby RC2 Released; What’s Next? headius.blogspot.com14 commentsSocialRank If you’re curious about RC2’s performance, log onto mix.oracle.com. As of this morning, Mix is running on RC2! Covered By: rorblog.techcfl.com,oracleappslab.com, grahamis.com

  2. Rich Manalang - FriendFeed Says:

    Mix President’s Day Release: JRuby 1.1RC2 and a bunch of other stuff!

  3. Oracle Mix updated with JRuby 1.1RC2 Says:

    […] rmanalan via oracleappslab.com Submitted: Feb 17 / 23:24 Oracle Mix updated with JRuby 1.1RC2 Oracle Mix was the first largest deployment of JRuby on Rails which was released in November. […]

  4. Patrick Wolf Says:

    Hi Rich,

    great to see Mix evolving!

    A question about the performance tests. A 100 byte big profile page? You seem to have a very very small one, mine is at least 16 KB big and yours on the production system is also 31 KB big. I think that’s more the size which is normally served for a web page and would be more appropriate for a benchmark.

    Greetings
    Patrick

  5. Patrick Wolf Says:

    Hi Rich,

    great to see Mix evolving!

    A question about the performance tests. A 100 byte big profile page? You seem to have a very very small one, mine is at least 16 KB big and yours on the production system is also 31 KB big. I think that’s more the size which is normally served for a web page and would be more appropriate for a benchmark.

    Greetings
    Patrick

  6. Peter Cooper Says:

    There’s definitely something a bit odd about those numbers. As Patrick mentions, only 100 bytes? Also, 1000 non-2xx responses? Isn’t this just a redirect? I can’t remember if ApacheBench will follow those (if it does, you’re good!)

  7. Peter Cooper Says:

    There’s definitely something a bit odd about those numbers. As Patrick mentions, only 100 bytes? Also, 1000 non-2xx responses? Isn’t this just a redirect? I can’t remember if ApacheBench will follow those (if it does, you’re good!)

  8. Interesting Ruby Tidbits That Don’t Need Separate Posts #17 Says:

    […] The latest release candidate of JRuby 1.1 has been released. 260 issues have been fixed since RC1 and a number of memory and IO improvements have been made. JRuby developer Charles Nutter gives some interesting background to JRuby’s current state. Nutter explains that JRuby’s performance now regularly exceeds that of Ruby 1.8.6 and even Ruby 1.9 in places. Meanwhile, other developers have been doing benchmarks. […]

  9. %w(Akita On Rails) * 2.0 - JRuby 1.1RC2 - Ainda mais rápido! Says:

    […] Além de mais de 250 correções de bugs ainda conseguiram arrancar mais performance. Veja algumas análises prematuras aqui e aqui […]

  10. Rich Manalang Says:

    @patrick, @peter, you’re right. Looks like that’s a redirect. I’ll test again with the redirect turned off.

  11. Rich Manalang Says:

    @patrick, @peter, you’re right. Looks like that’s a redirect. I’ll test again with the redirect turned off.

  12. Rich Manalang Says:

    @patrick, @peter, I ran my tests against a different page within the app (for some reason, AB isn’t taking the cookies I pass to it so instead I’m pointing it to a page that I was able to unsecure easily). The numbers have come down quite a bit:

    Benchmarking localhost (be patient)
    Finished 625 requests

    Server Software: Oracle
    Server Hostname: localhost
    Server Port: 8888

    Document Path: /feedback/new
    Document Length: 6166 bytes

    Concurrency Level: 4
    Time taken for tests: 20.16816 seconds
    Complete requests: 625
    Failed requests: 513
    (Connect: 0, Length: 513, Exceptions: 0)
    Write errors: 0
    Total transferred: 4056606 bytes
    HTML transferred: 3861294 bytes
    Requests per second: 31.22 [#/sec] (mean)
    Time per request: 128.108 [ms] (mean)
    Time per request: 32.027 [ms] (mean, across all concurrent requests)
    Transfer rate: 197.88 [Kbytes/sec] received

    Connection Times (ms)
    min mean[+/-sd] median max
    Connect: 0 0 0.6 0 16
    Processing: 35 127 119.1 105 1404
    Waiting: 31 126 119.1 104 1403
    Total: 35 127 119.1 105 1404

    Percentage of the requests served within a certain time (ms)
    50% 105
    66% 122
    75% 138
    80% 146
    90% 172
    95% 266
    98% 536
    99% 716
    100% 1404 (longest request)

  13. Rich Manalang Says:

    @patrick, @peter, I ran my tests against a different page within the app (for some reason, AB isn’t taking the cookies I pass to it so instead I’m pointing it to a page that I was able to unsecure easily). The numbers have come down quite a bit:

    Benchmarking localhost (be patient)
    Finished 625 requests
    
    Server Software:        Oracle
    Server Hostname:        localhost
    Server Port:            8888
    
    Document Path:          /feedback/new
    Document Length:        6166 bytes
    
    Concurrency Level:      4
    Time taken for tests:   20.16816 seconds
    Complete requests:      625
    Failed requests:        513
       (Connect: 0, Length: 513, Exceptions: 0)
    Write errors:           0
    Total transferred:      4056606 bytes
    HTML transferred:       3861294 bytes
    Requests per second:    31.22 [#/sec] (mean)
    Time per request:       128.108 [ms] (mean)
    Time per request:       32.027 [ms] (mean, across all concurrent requests)
    Transfer rate:          197.88 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.6      0      16
    Processing:    35  127 119.1    105    1404
    Waiting:       31  126 119.1    104    1403
    Total:         35  127 119.1    105    1404
    
    Percentage of the requests served within a certain time (ms)
      50%    105
      66%    122
      75%    138
      80%    146
      90%    172
      95%    266
      98%    536
      99%    716
     100%   1404 (longest request)
    
  14. JRuby IRC Chat Logs for 2008-02-22 Says:

    […] 14:48:56 <VVSiz>http://theappslab.com/2008/02/17/mix-presidents-day-release-jruby-11rc2-and-a-bunch-of-other-stuf… […]

Leave a Reply