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

Slides:



Advertisements
Similar presentations
ArcGIS Server Architecture at the DNR GIS/LIS Conference, October 2013.
Advertisements

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.
CIM2564 Introduction to Development Frameworks 1 Overview of a Development Framework Topic 1.
JSP: JavaServer Pages Juan Cruz Kevin Hessels Ian Moon.
1 Virtual Private Caches ISCA’07 Kyle J. Nesbit, James Laudon, James E. Smith Presenter: Yan Li.
Handling Web Hotspots at Dynamic Content Web Sites Using DotSlash Weibin Zhao Henning Schulzrinne Columbia University Dagstuhl.
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
Session-02. Objective In this session you will learn : What is Class Loader ? What is Byte Code Verifier? JIT & JAVA API Features of Java Java Environment.
Web Programming Language Dr. Ken Cosh Week 1 (Introduction)
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.
+ Java vs. Javascript Jessi Style. + Java Compiled Can stand on its own Written once, run anywhere Two-stage debugging Java is an Object Oriented Programming.
Deploying Ruby on Rails How to make your application actually serve Dan Buettner 18 Oct 2007.
High-level Languages.
Dynamic Resource Allocation Using Virtual Machines for Cloud Computing Environment.
1 Design and Performance of a Web Server Accelerator Eric Levy-Abegnoli, Arun Iyengar, Junehwa Song, and Daniel Dias INFOCOM ‘99.
Java Virtual Machine Java Virtual Machine A Java Virtual Machine (JVM) is a set of computer software programs and data structures that use.
Implement High-level Program Language on JVM CSCE 531 ZHONGHAO LIU ZHONGHAO LIU XIAO LIN.
Internet Information Services 7.0 Infrastructure Planning and Design Series.
การติดตั้งและทดสอบการทำคลัสเต อร์เสมือนบน Xen, ROCKS, และไท ยกริด Roll Implementation of Virtualization Clusters based on Xen, ROCKS, and ThaiGrid Roll.
Introduction to the Java Virtual Machine 井民全. JVM (Java Virtual Machine) the environment in which the java programs execute The specification define an.
Scalable Web Server on Heterogeneous Cluster CHEN Ge.
Algoval: Evaluation Server Past, Present and Future Simon Lucas Computer Science Dept Essex University 25 January, 2002.
Guy Rousseau, Modeling Manager, Atlanta Regional Commission Atlanta Travel Forecasting Methods: Traditional Trip-Based & Activity-Based Model AMPO Travel.
Evaluation of Agent Teamwork High Performance Distributed Computing Middleware. Solomon Lane Agent Teamwork Research Assistant October 2006 – March 2007.
Web Automation Testing With Selenium By Rajesh Kanade.
Module 4 Part 2 Introduction To Software Development : Programming & Languages Introduction To Software Development : Programming & Languages.
Ruby on Java Luc Castera
Component 4: Introduction to Information and Computer Science Unit 5: Overview of Programming Languages, Including Basic Programming Concepts Lecture 2.
GIS in the cloud: implementing a Web Map Service on Google App Engine Jon Blower Reading e-Science Centre University of Reading United Kingdom
A compiler is a computer program that translate written code (source code) into another computer language Associated with high level languages A well.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Philip Repsher October 29 th, 2008 Or Maybe November 3 rd, 2008.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
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.
Technical Reading Report Virtual Power: Coordinated Power Management in Virtualized Enterprise Environment Paper by: Ripal Nathuji & Karsten Schwan from.
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,
DataGrid is a project funded by the European Commission EDG Conference, Heidelberg, Sep 26 – Oct under contract IST OGSI and GT3 Initial.
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.
Aakarsh Malhotra ( ) Gandharv Kapoor( )
GlassFish Workshop 1 Dynamic Languages in GlassFish Arun Gupta blogs.sun.com/arungupta.
JRuby on Rails Presenter Name
JRuby on Rails Brian Leonard ブライアン レオナルド
Microsoft dynamics Axapta training institute Contact US: Magnific training
Web Programming Language
Sponsored by Portakal Technologies
Before You Begin Nahla Abuel-ola /WIT.
Outline Introduction to the Phalanger System
A Closer Look at Instruction Set Architectures
Ruby Tooling in NetBeans
An Evaluation of Current Ruby on Rails Serving Approaches
PHP / MySQL Introduction
5.6 Real-World Examples of ISAs
Module P3 Practical: Building a webapp in nodejs and
Java Programming Introduction
Web Servers (IIS and Apache)
Presentation transcript:

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

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

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

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

Rails Application Serving Ruby on Rails Application Serving CS526 5

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

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

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

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, " urls.add_url(40, " Ruby on Rails Application Serving CS526 9

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

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

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

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

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

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

Ruby on Rails Application Serving CS References Ruby: ruby-lang.org JRuby: jruby.codehaus.org RubyWebBench: Ruby on Rails: rubyonrails.com Mongrel: mongrel.rubyforge.org Thin: code.macournoyer.com/thin/ Apache2: apache.org nginx: nginx.net Pound: Swiftiply: swiftiply.swiftcore.org/ GlassFish: wiki.jruby.org/wiki/JRuby_on_Rails_in_GlassFish