SlideShare a Scribd company logo
Resin Java Web Server
                        Outperforms C-based NginX




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Open%Source,%Reliable%and%Lightweight%
      Java%EE%Applica;on%Server%




RESIN PRO   Web Profile   Health System   Cloud Support
NginX 1.2.0 versus Resin
                  4.0.29 Performance Tests
     •The following will be covered:
         • Resin validation as the single best solution for web server
           and application server
         • Tools used in benchmark testing
             • httperf
             • AutoBench
         • Results from performance testing Resin 4.0.29 and NginX
             1.2.0




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin outperforms NginX

     •Resin
         • Reputation as fast, lightweight and powerful Java
             application server

     •NginX
         • Known to be faster and more reliable under load than
             Apache HTTPD

     •Benchmark tests between Resin and NginX
         • Both yielded competitive figures
         • Resin leads testing with:
             • Fewer errors


Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server

Recommended for you

Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance

Presented at Web Unleashed 2019 More info at www.fitc.ca/webu Luke DeWitt REDspace Overview JavaScript’s popularity has exploded over the last decade, taking it from a laughable scripting language to one that powers much of the web today. Because it’s so flexible and so easy to learn, it’s extremely popular with new developers looking to cut their teeth in programming. However, these strengths are also weaknesses, as it’s incredibly easy to write bad JavaScript without even knowing it. A lot of these newer developers jump from “Hello, World!”, to TodoMVC in order to find the library that makes their life easier. By doing this, they skip over some of the important details of not only how JavaScript works, but also how to optimize its performance to ensure the best user experience. The Chrome profiler is a very handy tool that not a lot of developers have experience with. In this talk, we’ll take a beginner’s look at the profiler tool and examine how to use it to best improve your web application, and identify bottlenecks in your code without having to rely only on console.log statements. Objective To help developers understand how to better make use of the JavaScript profiler. Target Audience Any JavaScript developers Assumed Audience Knowledge Basic JavaScript Level Beginner / intermediate Five Things Audience Members Will Learn Javascript inner-workings Profiling concepts Identifying bottlenecks Profiling node applications Tooling

 
by FITC
javascriptweb development
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets

WebSocket is a protocol that provides bidirectional communication over a single TCP connection. It uses an HTTP handshake to establish a connection and then transmits messages as frames that can contain text or binary data. The frames include a header with metadata like opcode and payload length. WebSocket aims to provide a standard for browser-based applications that require real-time data updates from a server.

html5springjava
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites

Presented at FITC Toronto 2019 More info at www.fitc.ca/toronto Chris Zacharias imgix Overview The average website loads over 1.5MBs of content per page, making over 75 requests. Many popular websites are serving over 5MBs just to load their homepages. And these numbers represent measurements taken AFTER compression is applied. The full weight of many popular websites is pushing 20+ MBs these days. In an era where performance truly matters to the end user experience, web developers need techniques to help curtail this bloat in data down the wire. No matter how well you optimize, there is no better way to than to delete things you do not need. How does one determine what is essential to the user experience and what is not? One answer Chris posits is to develop a hyper-lightweight version of your website which will provide critical insights into your specific performance priorities. This is a process that he has leveraged on many projects, in particular at YouTube to reduce the size of the video watch page from 1.5MBs to 100KBs. In this talk, Chris will take real-world web pages and show techniques for dramatically reducing their page weight and for identifying areas to optimize, while outlining the key steps to doing this well. Objective Learn a process for building a hyper-lightweight version of your website for establishing reasonable performance budgets, grounded in reality, to work from. Target Audience Web developers Assumed Audience Knowledge HTML, CSS, Javascript, some server-side awareness. Level Intermediate Five Things Audience Members Will Learn How to analyze a web page for performance issues A holistic approach to deconstructing an existing website A clear process for building a hyper-lightweight version of your website Translating your findings into real performance priorities Establishing a realistic performance budget

 
by FITC
front-end developersperformanceweb development
Benchmark Tools

     • Industry standard tool and methodology
         • Httperf
             • httperf is tool produced by HP for measuring web server performance.
                 The httperf tool supports HTTP/1.1 keepalives and SSL protocols.
         • AutoBench
             • a tool for automating a comparative benchmark test against two a web
               servers.
             • Runs httperf against each host.
             • Increases the number of requests per seconds on each iteration.
             • Delivers output in a format that can be easily consumed by spreadsheet
                 tools.
             • The command autobenchd is used to run a daemon on client machines.
             • The autobench_admin command drives many clients to run test at same
                 time by communicating with autobenchd.




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Test Setup Overview




     •Configuration
         • The only change that was made was the
             worker_processes were set to 8 for NginX to improve
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Hardware Software Specifications

     • Client HW/OS specs:
          • i7 4 core / 8 HT, 2.8 GHZ, 8Meg Cache, 8 GB RAM.
          • Ubuntu 12 / Linux Kernel 3.2.0-26-generic
     • Server HW specs:
          • i7 4 core / 8 HT, 2.8 GHZ, 8Meg Cache, 8 GB RAM.
          • Ubuntu 12 / Linux Kernel 3.2.0-26-generic
     • Test software
          • Autobench 2.1.1
          • httperf 0.9.0
     • Software under test:
          • Resin Pro 4.0.29
          • nginx 1.2.0
Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
0K Test - Command Line
                                Arguments
         0k.sh
                    ./admin.sh 300000 2000 20000 1000 0k


         admin.sh
                    autobench_admin
                    --clients xen:4600,lancre:4600
                    --uri1 /file_$5.html
                    --host1 ch_resin --port1 8080
                    --uri2 /file_$5.html
                    --host2 ch_nginx --port2 80
                    --num_conn $1
                    --num_call 10
                    --low_rate $2
                    --high_rate $3
                    --rate_step $4
                    --timeout 3
                    --file out_con$1_start$2_end$3_step$4_$5.tsv

         (Above is used to setup 300,000 connections at a rate of 20,000 to 200,000 requests per
         second.
         Each iteration increases the rate by 10,000 from 20,000 to 200,000.)

         0k.html
                    html>
                    <body>
                    <pre></pre>
                    </body>
                    </html>

Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server

Recommended for you

Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter

This document discusses best practices for designing, scaling, and maintaining large-scale web applications. Some of the key points made include: having a consistent and flexible data model, loosely coupling components for easier testing and replacement, using caching strategies like page fragments and memcached, and emphasizing development practices like version control, testing, and monitoring performance. The document advocates for a modular architecture with components like load balancers, reverse proxies, caching layers, and asynchronous job queues.

varnishesiperl
Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache Camel

This document provides an overview and introduction to Apache Camel, an open-source integration library. It discusses what integration is and why it is difficult. It then introduces Apache Camel as a lightweight integration library that uses enterprise integration patterns and components to provide routing, mediation, and transformation capabilities. The document provides examples of how to define integration logic in Camel using Java and XML domain-specific languages. It also discusses Camel's support for enterprise integration patterns, pre-built components, testing framework, and management capabilities.

camel fuse red hat integration webinar
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning

This document provides an overview of Apache ActiveMQ, an open-source messaging server. It discusses ActiveMQ's features such as high performance, high availability, multiple protocols and transports. It also covers tools for benchmarking and performance tuning ActiveMQ brokers, including the ActiveMQ Performance Module, jms-benchmark, JMSTester, JMeter and OS monitoring tools. The document is intended to help understand how to approach performance tuning of ActiveMQ brokers.

apache software foundationperformanceapache activemq
Resin 4.0.29 vs NginX 1.2.0
                  0K file - requests per second




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                       0K file - Response Time




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                        0K file - IO throughput




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                            0K file - Errors




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server

Recommended for you

Using Apache Camel as AKKA
Using Apache Camel as AKKAUsing Apache Camel as AKKA
Using Apache Camel as AKKA

The document discusses using Apache Camel and Apache Karaf to build distributed, asynchronous systems in a similar way to AKKA. It provides examples of building a dynamic routing system using Camel routing and JMS, as well as a modular ETL system for processing CSV files using a configurable, hot-deployable mutation framework. The examples demonstrate how to achieve scalability, modularity, and asynchronous behavior without deep knowledge of the underlying technologies through an event-driven architecture based on messaging.

apache camel akka routing dynamic
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)

Presentation by Peter Lubbers and Frank Salim presented at the San Francisco HTML5 User Group/GTUGSF Code Lab.

web socketsrealtimehtml5
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter LedbrookJava Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook

This document discusses how to integrate Grails applications with various enterprise systems and processes. It covers integrating Grails with build tools like Ant and Maven, managing dependencies, connecting to legacy databases, deploying applications, and integrating with Spring frameworks for messaging, web services, and other enterprise features. Grails can work with many external systems through plugins, custom ORM mappings, and by treating Grails as a Spring application. This allows Grails applications to fit into a variety of enterprise environments and development processes.

jaxjava tech & toolsjax london
1K Test - Command Line
                                Arguments
         1k.sh
                    ./admin.sh 200000 1000 10000 250 1k


         admin.sh
                    autobench_admin
                    --clients xen.caucho.com:4600,lancre.caucho.com:4600
                    --uri1 /file_$5.html
                    --host1 ch_resin --port1 8080
                    --uri2 /file_$5.html
                    --host2 ch_nginx --port2 80
                    --num_conn $1
                    --num_call 10
                    --low_rate $2
                    --high_rate $3
                    --rate_step $4
                    --timeout 3
                    --file out_con$1_start$2_end$3_step$4_$5.tsv
         1k.html
                    html>
                    <body>
                    <pre>
                    0 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    1 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    2 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    3 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    4 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    5 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    6 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    7 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    8 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    9 0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789   0123456789
                    </pre>
                    </body>
                    </html>




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                  1K file - requests per second




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                       1K file - Response Time




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                        1K file - IO throughput




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server

Recommended for you

Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel

Apache Camel is a powerful open source integration framework that allows developers to focus on business logic by hiding complexity. It supports over 80 components and 19 data formats, and provides a domain-specific language for integration patterns in Java, XML, and Scala. Camel routes can be run in standalone applications or deployed to various containers.

camelintegrationfusesource
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel

We start with an introduction to what Apache Camel is, and how you can use Camel to make integration much easier. Allowing you to focus on your business logic, rather than low level messaging protocols, and transports. You will also hear what other features Camel provides out of the box, which can make integration much easier for you. We look into web console tooling that allows you to get insight into your running Apache Camel applications, which has among others visual route diagrams with tracing/debugging and profiling capabilities. In addition to the web tooling we will also show you other tools in the making.

apache camelopen sourceintegration
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011

The document summarizes TorqueBox, which allows Ruby applications to run on the JBoss Application Server. TorqueBox combines JRuby and JBoss AS to provide features like clustering, load balancing, high availability, messaging, background jobs, and long-running services to Ruby applications. It allows Ruby applications to leverage Java libraries and tools while retaining the simplicity and flexibility of Ruby.

torqueboxjbossjruby
Resin 4.0.29 vs NginX 1.2.0
                            1K file - Errors




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                  8K file - requests per second




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Resin 4.0.29 vs NginX 1.2.0
                64K file - requests per second




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
Links
     •www.caucho.com
     •blog.caucho.com - Resin vs. NginX
     •Resin Java Web Server Outperforms C-based
         NginX




Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server

Recommended for you

Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011

TorqueBox allows developers to build and deploy Rack and JRuby applications on JBoss Application Server. It provides features such as background processing, scheduling, services and clustering out of the box. TorqueBox makes use of JRuby's Java integration to provide a fast Ruby runtime and access to Java libraries and tools. It aims to provide all the capabilities of a full application server while allowing developers to work in Ruby and avoid technologies like XML, Java code and WAR files. Setting up TorqueBox involves downloading the distribution, exporting some environment variables and using Rake tasks to deploy and manage applications.

Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel

This presentation describes Event Driven Architecture(EDA) support in Camel, and scalability features like SEDA and Akka support in Camel.It starts with an overview of Camel and introduces its simple syntax

event driven architectureapache cameleda
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction

This document provides an overview of HTML5 WebSocket technology. It discusses limitations of traditional HTTP and how WebSocket enables full-duplex communication by reducing overhead and latency compared to alternative techniques like polling. The WebSocket API and protocol are introduced, along with browser support and server library options. Key benefits of WebSocket include unlimited connections per server, very small overhead, and true real-time bidirectional communication across the web.

html5websocketkaazing

More Related Content

What's hot

WebSocket protocol
WebSocket protocolWebSocket protocol
WebSocket protocol
Kensaku Komatsu
 
Reactor grails realtime web devoxx 2013
Reactor grails realtime web   devoxx 2013Reactor grails realtime web   devoxx 2013
Reactor grails realtime web devoxx 2013
Stéphane Maldini
 
Tips for going fast in a slow world: Michael May at OSCON 2015
Tips for going fast in a slow world: Michael May at OSCON 2015Tips for going fast in a slow world: Michael May at OSCON 2015
Tips for going fast in a slow world: Michael May at OSCON 2015
Fastly
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
FITC
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
Gunnar Hillert
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
FITC
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
Tomas Doran
 
Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache Camel
Kenneth Peeples
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
Christian Posta
 
Using Apache Camel as AKKA
Using Apache Camel as AKKAUsing Apache Camel as AKKA
Using Apache Camel as AKKA
Johan Edstrom
 
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
Peter Lubbers
 
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter LedbrookJava Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
JAX London
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
FuseSource.com
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
Claus Ibsen
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
tobiascrawley
 
Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011
tobiascrawley
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel
prajods
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction
Marcelo Jabali
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
Roland M
 
HTML5 WebSockets
HTML5 WebSocketsHTML5 WebSockets
HTML5 WebSockets
Harri Hämäläinen
 

What's hot (20)

WebSocket protocol
WebSocket protocolWebSocket protocol
WebSocket protocol
 
Reactor grails realtime web devoxx 2013
Reactor grails realtime web   devoxx 2013Reactor grails realtime web   devoxx 2013
Reactor grails realtime web devoxx 2013
 
Tips for going fast in a slow world: Michael May at OSCON 2015
Tips for going fast in a slow world: Michael May at OSCON 2015Tips for going fast in a slow world: Michael May at OSCON 2015
Tips for going fast in a slow world: Michael May at OSCON 2015
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
 
Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache Camel
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
 
Using Apache Camel as AKKA
Using Apache Camel as AKKAUsing Apache Camel as AKKA
Using Apache Camel as AKKA
 
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
HTML5 Real Time and WebSocket Code Lab (SFHTML5, GTUGSF)
 
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter LedbrookJava Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
 
Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011Torquebox @ Raleigh.rb - April 2011
Torquebox @ Raleigh.rb - April 2011
 
Event Driven Architecture with Apache Camel
Event Driven Architecture with Apache CamelEvent Driven Architecture with Apache Camel
Event Driven Architecture with Apache Camel
 
HTML5 WebSocket Introduction
HTML5 WebSocket IntroductionHTML5 WebSocket Introduction
HTML5 WebSocket Introduction
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
 
HTML5 WebSockets
HTML5 WebSocketsHTML5 WebSockets
HTML5 WebSockets
 

Similar to Resin Outperforms NginX

Nginx
NginxNginx
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI serverPyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
PloneFoundation
 
Varnish Cache
Varnish CacheVarnish Cache
Varnish Cache
Mike Willbanks
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
schoefmax
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
Fabio Akita
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018
Thijs Feryn
 
Altitude SF 2017: Optimizing your hit rate
Altitude SF 2017: Optimizing your hit rateAltitude SF 2017: Optimizing your hit rate
Altitude SF 2017: Optimizing your hit rate
Fastly
 
Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.
Mike Willbanks
 
Varnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright CrazyVarnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright Crazy
Mike Willbanks
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebula Project
 
Cdn cs6740
Cdn cs6740Cdn cs6740
Cdn cs6740
Aravindharamanan S
 
How to ensure Presto scalability 
in multi use case
How to ensure Presto scalability 
in multi use case How to ensure Presto scalability 
in multi use case
How to ensure Presto scalability 
in multi use case
Kai Sasaki
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
All Things Open
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014
bryan_call
 
HAProxy
HAProxy HAProxy
HAProxy
Arindam Nayak
 
haproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfhaproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdf
PawanVerma628806
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018
Thijs Feryn
 
Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...
Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...
Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...
Michele Orru
 
Nginx, PHP, Apache and Spelix
Nginx, PHP, Apache and SpelixNginx, PHP, Apache and Spelix
Nginx, PHP, Apache and Spelix
Harald Zeitlhofer
 
Intel & QLogic NIC performance test results v0.2
Intel & QLogic NIC performance test results v0.2Intel & QLogic NIC performance test results v0.2
Intel & QLogic NIC performance test results v0.2
David Pasek
 

Similar to Resin Outperforms NginX (20)

Nginx
NginxNginx
Nginx
 
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI serverPyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
Pyruvate, a reasonably fast, non-blocking, multithreaded WSGI server
 
Varnish Cache
Varnish CacheVarnish Cache
Varnish Cache
 
Caching with Varnish
Caching with VarnishCaching with Varnish
Caching with Varnish
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018
 
Altitude SF 2017: Optimizing your hit rate
Altitude SF 2017: Optimizing your hit rateAltitude SF 2017: Optimizing your hit rate
Altitude SF 2017: Optimizing your hit rate
 
Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.
 
Varnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright CrazyVarnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright Crazy
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
 
Cdn cs6740
Cdn cs6740Cdn cs6740
Cdn cs6740
 
How to ensure Presto scalability 
in multi use case
How to ensure Presto scalability 
in multi use case How to ensure Presto scalability 
in multi use case
How to ensure Presto scalability 
in multi use case
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014Choosing A Proxy Server - Apachecon 2014
Choosing A Proxy Server - Apachecon 2014
 
HAProxy
HAProxy HAProxy
HAProxy
 
haproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdfhaproxy-150423120602-conversion-gate01.pdf
haproxy-150423120602-conversion-gate01.pdf
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018
 
Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...
Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...
Rooting your internals - Exploiting Internal Network Vulns via the Browser Us...
 
Nginx, PHP, Apache and Spelix
Nginx, PHP, Apache and SpelixNginx, PHP, Apache and Spelix
Nginx, PHP, Apache and Spelix
 
Intel & QLogic NIC performance test results v0.2
Intel & QLogic NIC performance test results v0.2Intel & QLogic NIC performance test results v0.2
Intel & QLogic NIC performance test results v0.2
 

Recently uploaded

Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 

Recently uploaded (20)

Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 

Resin Outperforms NginX

  • 1. Resin Java Web Server Outperforms C-based NginX Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 2. Open%Source,%Reliable%and%Lightweight% Java%EE%Applica;on%Server% RESIN PRO Web Profile Health System Cloud Support
  • 3. NginX 1.2.0 versus Resin 4.0.29 Performance Tests •The following will be covered: • Resin validation as the single best solution for web server and application server • Tools used in benchmark testing • httperf • AutoBench • Results from performance testing Resin 4.0.29 and NginX 1.2.0 Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 4. Resin outperforms NginX •Resin • Reputation as fast, lightweight and powerful Java application server •NginX • Known to be faster and more reliable under load than Apache HTTPD •Benchmark tests between Resin and NginX • Both yielded competitive figures • Resin leads testing with: • Fewer errors Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 5. Benchmark Tools • Industry standard tool and methodology • Httperf • httperf is tool produced by HP for measuring web server performance. The httperf tool supports HTTP/1.1 keepalives and SSL protocols. • AutoBench • a tool for automating a comparative benchmark test against two a web servers. • Runs httperf against each host. • Increases the number of requests per seconds on each iteration. • Delivers output in a format that can be easily consumed by spreadsheet tools. • The command autobenchd is used to run a daemon on client machines. • The autobench_admin command drives many clients to run test at same time by communicating with autobenchd. Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 6. Test Setup Overview •Configuration • The only change that was made was the worker_processes were set to 8 for NginX to improve Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 7. Hardware Software Specifications • Client HW/OS specs: • i7 4 core / 8 HT, 2.8 GHZ, 8Meg Cache, 8 GB RAM. • Ubuntu 12 / Linux Kernel 3.2.0-26-generic • Server HW specs: • i7 4 core / 8 HT, 2.8 GHZ, 8Meg Cache, 8 GB RAM. • Ubuntu 12 / Linux Kernel 3.2.0-26-generic • Test software • Autobench 2.1.1 • httperf 0.9.0 • Software under test: • Resin Pro 4.0.29 • nginx 1.2.0 Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 8. 0K Test - Command Line Arguments 0k.sh ./admin.sh 300000 2000 20000 1000 0k admin.sh autobench_admin --clients xen:4600,lancre:4600 --uri1 /file_$5.html --host1 ch_resin --port1 8080 --uri2 /file_$5.html --host2 ch_nginx --port2 80 --num_conn $1 --num_call 10 --low_rate $2 --high_rate $3 --rate_step $4 --timeout 3 --file out_con$1_start$2_end$3_step$4_$5.tsv (Above is used to setup 300,000 connections at a rate of 20,000 to 200,000 requests per second. Each iteration increases the rate by 10,000 from 20,000 to 200,000.) 0k.html html> <body> <pre></pre> </body> </html> Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 9. Resin 4.0.29 vs NginX 1.2.0 0K file - requests per second Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 10. Resin 4.0.29 vs NginX 1.2.0 0K file - Response Time Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 11. Resin 4.0.29 vs NginX 1.2.0 0K file - IO throughput Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 12. Resin 4.0.29 vs NginX 1.2.0 0K file - Errors Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 13. 1K Test - Command Line Arguments 1k.sh ./admin.sh 200000 1000 10000 250 1k admin.sh autobench_admin --clients xen.caucho.com:4600,lancre.caucho.com:4600 --uri1 /file_$5.html --host1 ch_resin --port1 8080 --uri2 /file_$5.html --host2 ch_nginx --port2 80 --num_conn $1 --num_call 10 --low_rate $2 --high_rate $3 --rate_step $4 --timeout 3 --file out_con$1_start$2_end$3_step$4_$5.tsv 1k.html html> <body> <pre> 0 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 1 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 2 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 3 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 4 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 5 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 6 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 7 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 8 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 9 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 </pre> </body> </html> Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 14. Resin 4.0.29 vs NginX 1.2.0 1K file - requests per second Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 15. Resin 4.0.29 vs NginX 1.2.0 1K file - Response Time Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 16. Resin 4.0.29 vs NginX 1.2.0 1K file - IO throughput Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 17. Resin 4.0.29 vs NginX 1.2.0 1K file - Errors Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 18. Resin 4.0.29 vs NginX 1.2.0 8K file - requests per second Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 19. Resin 4.0.29 vs NginX 1.2.0 64K file - requests per second Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server
  • 20. Links •www.caucho.com •blog.caucho.com - Resin vs. NginX •Resin Java Web Server Outperforms C-based NginX Caucho Home | Contact Us | Caucho Blog | Wiki | Application Server

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n