An Evaluation of Current Ruby on Rails Serving Approaches

Slides:



Advertisements
Similar presentations
Welcome to Middleware Joseph Amrithraj
Advertisements

ArcGIS Server Architecture at the DNR GIS/LIS Conference, October 2013.
Lucas Schill Brent Grover Ed Schilla Advisor: Danny Miller.
SLA-Oriented Resource Provisioning for Cloud Computing
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Prime’ Senior Project. Presentation Outline What is Our Project? Problem Definition What does our system do? How does the system work? Implementation.
Technology Overview JAVA Servlets CS-611 S. Witherspoon.
XENMON: QOS MONITORING AND PERFORMANCE PROFILING TOOL Diwaker Gupta, Rob Gardner, Ludmila Cherkasova 1.
2006/07/12ICPADS Secure and High-performance Web Server System for Shared Hosting Service Daisuke Hara and Yasuichi Nakayama The University.
JSP: JavaServer Pages Juan Cruz Kevin Hessels Ian Moon.
An Evaluation of Current Ruby on Rails Serving Approaches Jeremy Witmer CS 526 Spring 2008.
1 Virtual Private Caches ISCA’07 Kyle J. Nesbit, James Laudon, James E. Smith Presenter: Yan Li.
Java Server Team 8. Overview What is a Java Server? History Architecture Advantages Disadvantages Current Technologies Conclusion.
PHP Scripting Language. Introduction “PHP” is an acronym for “PHP: Hypertext Preprocessor.” It is an interpreted, server-side scripting language. Originally.
Introduction to DoC Private Cloud
Intro to Java The Java Virtual Machine. What is the JVM  a software emulation of a hypothetical computing machine that runs Java bytecodes (Java compiler.
RUBY ON RAILS It’s so rad. What we’ll cover  What is Ruby?  What is RoR?  Why RoR?  Developing with RoR  Deployment  Demo  Questions.
IBIS System: Requirements and Components Lois M. Haggard Office of Public Health Assessment.
Deploying Ruby on Rails How to make your application actually serve Dan Buettner 18 Oct 2007.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Chapter 2: System Structures.
High-level Languages.
Internet Information Services 7.0 Infrastructure Planning and Design Series.
Ruby on Java Luc Castera
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Philip Repsher October 29 th, 2008 Or Maybe November 3 rd, 2008.
By: Cheryl Mok & Sarah Tan. Java is partially interpreted. 1. Programmer writes a program in textual form 2. Runs the compiler, which converts the textual.
Computer Organization Instruction Set Architecture (ISA) Instruction Set Architecture (ISA), or simply Architecture, of a computer is the.
PROOF Benchmark on Different Hardware Configurations 1 11/29/2007 Neng Xu, University of Wisconsin-Madison Mengmeng Chen, Annabelle Leung, Bruce Mellado,
Web Cache. What is Cache? Cache is the storing of data temporarily to improve performance. Cache exist in a variety of areas such as your CPU, Hard Disk.
1 Cloud Computing, CS An OS for Multicore and Cloud + Microsoft Azure Platform.
© 2008 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice ProLiant G5 to G6 Processor Positioning.
GBIF NODES Committee Meeting Copenhagen, Denmark 4 th October 2009 The GBIF IPT Requirements Kyle Braak Developer GBIF Secretariat.
GlassFish Workshop 1 Dynamic Languages in GlassFish Arun Gupta blogs.sun.com/arungupta.
JRuby on Rails Presenter Name
JRuby on Rails Brian Leonard ブライアン レオナルド
Hadoop Javad Azimi May What is Hadoop? Software platform that lets one easily write and run applications that process vast amounts of data. It includes:
Microsoft dynamics Axapta training institute Contact US: Magnific training
An OS for Multicore and Cloud + Microsoft Azure Platform
Applications Active Web Documents Active Web Documents.
Web Programming Language
Title of the Poster Supervised By: Prof.*********
Sponsored by Portakal Technologies
Operating System Structures
Before You Begin Nahla Abuel-ola /WIT.
Outline Introduction to the Phalanger System
Done By: Ashlee Lizarraga Ricky Usher Jacinto Roches Eli Gomez
CSCI-235 Micro-Computer Applications
A Closer Look at Instruction Set Architectures
Roadmap C: Java: Assembly language: OS: Machine code: Computer system:
Hybrid Cloud Architecture for Software-as-a-Service Provider to Achieve Higher Privacy and Decrease Securiity Concerns about Cloud Computing P. Reinhold.
Spark Presentation.
UNIT I OVERVIEW & INSTRUCTIONS
Ruby Tooling in NetBeans
JRuby on Rails Charles Oliver Nutter JRuby Core Developer
Introduction Enosis Learning.
PHP / MySQL Introduction
Collaborative Offloading for Distributed Mobile-Cloud Apps
Introduction to Java Dept. Business Computing University of Winnipeg
OS Virtualization.
Introduction Enosis Learning.
Moodle Scalability What is Scalability?
5.6 Real-World Examples of ISAs
Module P3 Practical: Building a webapp in nodejs and
Experiences with Hadoop and MapReduce
(Computer fundamental Lab)
Java Programming Introduction
UFCEUS-20-2 Web Programming
Web Servers (IIS and Apache)
Web Application Development Using PHP
Presentation transcript:

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

Ruby on Rails Application Serving CS526 Overview Purpose Introduction Application Servers Reverse Proxies Procedure Benchmarking Results Conclusions Future Research 5.5.2008 Ruby on Rails Application Serving CS526

Ruby on Rails Application Serving CS526 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

Ruby on Rails Application Serving CS526 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

Rails Application Serving 5.5.2008 Ruby on Rails Application Serving CS526

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

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

Ruby on Rails Application Serving CS526 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

Ruby on Rails Application Serving CS526 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

Ruby on Rails Application Serving CS526 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

Results Application Servers, 1000 Request Benchmark Software Platform Total Time Requests/Second Mean Time/ Request (ms) WEBrick Ruby 31.9797 31.2697 159 JRuby 54.6763 18.2894 272 Thin 28.4653 35.1304 142 Mongrel 30.8750 32.3885 154 46.8135 21.3613 233 5.5.2008 Ruby on Rails Application Serving CS526

Results Reverse Proxies to Clusters, 1000 Request Benchmark Software Platform Total Time Requests/Second Mean Time/ Request (ms) Apache2 Ruby 16.6153 60.1851 82 JRuby 15.6863 63.7495 78 nginx 16.6326 60.1226 19.4436 51.4306 97 Pound 16.6878 59.9239 83 17.1875 58.1815 85 Swiftiply Ruby only 18.2185 54.8891 90 GlassFish JRuby only 1.1563 864.7653 5 100,000 Req. 201.4331 496.4425 10 5.5.2008 Ruby on Rails Application Serving CS526

Ruby on Rails Application Serving CS526 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

Ruby on Rails Application Serving CS526 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

Ruby on Rails Application Serving CS526 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

Ruby on Rails Application Serving CS526 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 5.5.2008 Ruby on Rails Application Serving CS526