Presentation is loading. Please wait.

Presentation is loading. Please wait.

An Evaluation of Current Ruby on Rails Serving Approaches Jeremy Witmer CS 526 Spring 2008.

Similar presentations


Presentation on theme: "An Evaluation of Current Ruby on Rails Serving Approaches Jeremy Witmer CS 526 Spring 2008."— Presentation transcript:

1 An Evaluation of Current Ruby on Rails Serving Approaches Jeremy Witmer CS 526 Spring 2008

2 Overview 1.Purpose 2.Introduction 3.Application Servers 4.Reverse Proxies 5.Procedure 6.Benchmarking 7.Results 8.Conclusions 9.Future Research 5.5.2008 Ruby on Rails Application Serving CS526 2

3 Purpose The purpose of this project is to survey the current best application servers for Ruby on Rails, and best methods for reverse proxy to a cluster of application servers. 5.5.2008 Ruby on Rails Application Serving CS526 3

4 Introduction What is Ruby? Ruby is a dynamically typed object-oriented programming language with significant metaprogramming capabilities What is JRuby? JRuby is an implementation of Ruby that runs on the Java Virtual Machine (JVM) What is Rails? Rails is a web application development framework written Ruby, which uses the metaprogramming capabilities of Ruby to ease development effort. 5.5.2008 Ruby on Rails Application Serving CS526 4

5 Rails Application Serving 5.5.2008 Ruby on Rails Application Serving CS526 5

6 Application Servers WEBrick Mongrel Thin 5.5.2008 Ruby on Rails Application Serving CS526 6

7 Reverse Proxies Apache 2 nginx Pound Swiftiply Glassfish 5.5.2008 Ruby on Rails Application Serving CS526 7

8 Procedure 1. Set up a basic Rails application (used gullery) 2. Run a single instance of each application server and benchmark the throughput 3. For each of the reverse proxy options: 1. Set up the reverse proxy to dispatch to the cluster 2. Run a cluster of 3 Mongrels, first on Ruby, then on JRuby 3. Run the benchmarks to measure cluster throughput 4. Set up gullery application to run on Glassfish under JRuby and run the same benchmarks 5.5.2008 Ruby on Rails Application Serving CS526 8

9 Benchmarking All benchmarks performed using RubyWebBench RWB allows scripting requests and weighting among URLs in the application Each cluster setup was tested 3 times with 1000 requests urls.add_url(20, "http://localhost:3500") urls.add_url(40, "http://localhost:3500/projects/show/1") 5.5.2008 Ruby on Rails Application Serving CS526 9

10 Benchmark Platform 2.4 GHz Intel Core 2 Duo 2 GB 667MHz DDR2 SDRAM OSX 10.5 For specific versions of the tested software, refer to the wiki 5.5.2008 Ruby on Rails Application Serving CS526 10

11 Results Application Servers, 1000 Request Benchmark 5.5.2008 Ruby on Rails Application Serving CS526 11

12 Results Reverse Proxies to Clusters, 1000 Request Benchmark 5.5.2008 Ruby on Rails Application Serving CS526 12

13 Conclusions Use GlassFish – Combining the reverse proxy with the application server has significant benefit Use Thin on native Ruby, with Apache2 if not JRuby Ruby and JRuby similar overall in terms of performance JRuby takes longer to start, but does better in terms of memory and processor usage JRuby doesn’t have a user-space threading problem 5.5.2008 Ruby on Rails Application Serving CS526 13

14 Future Work Benchmark modrails as an application server/proxy Benchmark haProxy for reverse proxying Compare results to hardware reverse proxy/load balancers 5.5.2008 Ruby on Rails Application Serving CS526 14

15 Wiki, Files, and Scripts Wiki is at cs.uccs.edu/~jtwitmer/cs526/Project/ –Project report –Setup instructions for Rails application –Setup Instructions for all application servers and proxies Wiki generated with Instiki: rubyforge.org/projects/instiki/ Files at cs.uccs.edu/~jtwitmer/cs526/Project/FilesAndScripts.html 5.5.2008 Ruby on Rails Application Serving CS526 15

16 5.5.2008 Ruby on Rails Application Serving CS526 16 References Ruby: ruby-lang.org JRuby: jruby.codehaus.org RubyWebBench: http://rubyforge.org/projects/rwb/ Ruby on Rails: rubyonrails.com Mongrel: mongrel.rubyforge.org Thin: code.macournoyer.com/thin/ Apache2: apache.org nginx: nginx.net Pound: www.apsis.ch/pound/ Swiftiply: swiftiply.swiftcore.org/ GlassFish: wiki.jruby.org/wiki/JRuby_on_Rails_in_GlassFish


Download ppt "An Evaluation of Current Ruby on Rails Serving Approaches Jeremy Witmer CS 526 Spring 2008."

Similar presentations


Ads by Google