Web Server Deathmatch



Similar documents
Sun 8Gb/s Fibre Channel HBA Performance Advantages for Oracle Database

TODAY web servers become more and more

How To Use Ngnix (Php) With A Php-Fpm (Php-Fmm) On A Web Server (Php5) On Your Web Browser) On An Ubuntu Web Server On A Raspberry Web 2.5 (Net

Linux NIC and iscsi Performance over 40GbE

Igor Seletskiy. CEO, CloudLinux

The current version installed on your server is el6.x86_64 and it's the latest available.

Davor Guttierrez 3 Gen d.o.o. Optimizing Linux Servers

Supermicro Ethernet Switch Performance Test Straightforward Public Domain Test Demonstrates 40Gbps Wire Speed Performance

Command Line Install and Config For IBM BPM 8.5

OVERVIEW Methodology Objectives Terminology Recommended Test Protocol... 3 CLOUD SERVICES VS. DEDICATED HOSTING...

MAGENTO HOSTING Progressive Server Performance Improvements

Evaluation of 40 Gigabit Ethernet technology for data servers

FreeBSD + nginx: Best WWW server for the best OS

Delivering Quality in Software Performance and Scalability Testing

Consolidating Web Applications Using VMware Infrastructure VMware Infrastructure 3

Tomcat Tuning. Mark Thomas April 2009

Vizrt Community Expansion Performance Guide

Wednesday, October 10, 12. Running a High Performance LAMP stack on a $20 Virtual Server

Tuning for Web Serving on the Red Hat Enterprise Linux 6.4 KVM Hypervisor. Barry Arndt - Linux Technology Center, IBM

IT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including:

MASTER THESIS. TITLE: Analysis and evaluation of high performance web servers

PHP web serving study Performance report

Adobe LiveCycle Data Services 3 Performance Brief

<Insert Picture Here>

Performance test of Voyage on Alix Board

Vizrt Community Expansion Performance Guide

Test Methodology White Paper. Author: SamKnows Limited

PeopleSoft Online Performance Guidelines

SIGMOD RWE Review Towards Proximity Pattern Mining in Large Graphs

Applications Manager Best Practices document

Cloud Performance Benchmark Series

Drupal Performance Tuning

DELL. Virtual Desktop Infrastructure Study END-TO-END COMPUTING. Dell Enterprise Solutions Engineering

JBoss Seam Performance and Scalability on Dell PowerEdge 1855 Blade Servers

Apache Tomcat Tuning for Production

Apache and Tomcat Clustering Configuration Table of Contents

Sample. WebCenter Sites. Go-Live Checklist

Amazon EC2 XenApp Scalability Analysis

Comparison of Web Server Architectures: a Measurement Study

ZingMe Practice For Building Scalable PHP Website. By Chau Nguyen Nhat Thanh ZingMe Technical Manager Web Technical - VNG

Random Walk Shoes. Setting Up a Web Server

The Simple High Available Linux File Server. Schlomo Schapiro Principal Consultant Leitung Virtualisierung & Open Source

How To Configure Apa Web Server For High Performance

Audit & Tune Deliverables

Perlbal: Reverse Proxy & Webserver

FileCruiser Backup & Restoring Guide

Very Large Enterprise Network, Deployment, Users

Running Nginx as Reverse Proxy server

AppDynamics Lite Performance Benchmark. For KonaKart E-commerce Server (Tomcat/JSP/Struts)

Agility Database Scalability Testing

It is recommended that you use a clean installation of Lion client before upgrading to Lion Server.

An Oracle White Paper March Load Testing Best Practices for Oracle E- Business Suite using Oracle Application Testing Suite

TRACE PERFORMANCE TESTING APPROACH. Overview. Approach. Flow. Attributes

How to create a load testing environment for your web apps using open source tools by Sukrit Dhandhania

SAS3 INSTALLATION MANUAL SNONO SYSTEMS 2015

A Performance Analysis of Distributed Indexing using Terrier

Server & Client Optimization

Performance and scalability of a large OLTP workload

Scalability and Performance with Apache 2.0

Sitecore Health. Christopher Wojciech. netzkern AG. Sitecore User Group Conference 2015

ZooKeeper Administrator's Guide

DSS. Diskpool and cloud storage benchmarks used in IT-DSS. Data & Storage Services. Geoffray ADDE

SYSTEM SETUP FOR SPE PLATFORMS

Very Large Enterprise Network Deployment, 25,000+ Users

Hardware Recommendations

Microsoft Windows Server 2003 with Internet Information Services (IIS) 6.0 vs. Linux Competitive Web Server Performance Comparison

Comparison of Memory Balloon Controllers

Architecting for the next generation of Big Data Hortonworks HDP 2.0 on Red Hat Enterprise Linux 6 with OpenJDK 7

This document will list the ManageEngine Applications Manager best practices

Cloud.com CloudStack Community Edition 2.1 Beta Installation Guide

Oracle Database 11g Release 2 Performance: Protocol Comparison Using Clustered Data ONTAP 8.1.1

CentOS Linux 5.2 and Apache 2.2 vs. Microsoft Windows Web Server 2008 and IIS 7.0 when Serving Static and PHP Content

Load and Performance Testing

SOLUTION BRIEF: SLCM R12.8 PERFORMANCE TEST RESULTS JANUARY, Submit and Approval Phase Results

Managing PHP Performance. By: Ilia Alshanetsky

SIDN Server Measurements

EWeb: Highly Scalable Client Transparent Fault Tolerant System for Cloud based Web Applications

NAS 249 Virtual Machine Configuration with VirtualBox

Performance Evaluation of VMXNET3 Virtual Network Device VMware vsphere 4 build

Analysis of Delivery of Web Contents for Kernel-mode and User-mode Web Servers

Recommended hardware system configurations for ANSYS users

Hardware and Software Requirements for Server Applications

Agenda. Tomcat Versions Troubleshooting management Tomcat Connectors HTTP Protocal and Performance Log Tuning JVM Tuning Load balancing Tomcat

A Micro-benchmark Suite for Evaluating Hadoop RPC on High-Performance Networks

Comparing the Performance of Web Server Architectures

Kentico CMS 6.0 Performance Test Report. Kentico CMS 6.0. Performance Test Report February 2012 ANOTHER SUBTITLE

OpenDaylight Performance Stress Tests Report

Legal Notices Introduction... 3

RecoveryVault Express Client User Manual

Transcription:

Web Server Deathmatch Joe Williams Cloudant @williamsjoe on Twitter http://www.joeandmotorboat.com/

Overview The Contenders The Systems, Test Setup, Environment and Configuration The Results Base Tests Experiements 13A vs 12B-5 Take Home

The Contenders Apache (Prefork) Apache (Worker) Erlang INETS:HTTP Lighttpd MochiWeb Nginx Yaws

The Systems Server Intel Core 2 Duo T7500 2.20GHz 4GB RAM 7200 RPM Hard Disk Ubuntu 8.10 x86_64 httperf Client Intel Core 2 Duo P7350 2.0GHz 2GB RAM 5400 RPM Hard Disk OSX x86_64 GigE link between machines

The Test Used httperf to test performance of serving static files Request payload 10k PNG file Six total test runs Three tests then reboot of server then three more Httperf configuration Request rates, 1000 to 5000/sec Incremented by 1000 each test Based on connections and calls 1000 requests = 100 connections x 10 calls per connection 2000 requests = 200 connections x 10 calls per connection etc..

Environment & Configuration Ran many iterations of the test to find optimal configurations for each server httperf via autobench httperf compiled with -DFD_SETSIZE=10000 -D_DARWIN_ULIMITED_SELECT autobench is a wrapper script for automating httperf tests http://www.xenoclast.org/autobench/ http://www.hpl.hp.com/research/linux/httperf/

Environment & Configuration ulimits File limits (ulimit -n) were increased on both the client and server sysctl.conf kernel.sem = 250 32000 100 128 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 fs.file-max = 65536 net.core.rmem_default = 524288 net.core.rmem_max = 16777216 net.core.wmem_default = 524288 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 2500 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_rfc1337 = 1 net.ipv4.tcp_sack = 1 net.ipv4.tcp_fack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_ecn = 0 net.ipv4.route.flush = 1 net.ipv4.ip_no_pmtu_disc = 0 vm.min_free_kbytes = 65536 vm.swappiness = 5 vm.vfs_cache_pressure = 50

Environment & Configuration Apache 2.2.11 Prefork and Worker Compiled with "--enable-nonportable-atomics=yes" Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 UseCanonicalName Off ServerTokens Full ServerSignature On HostnameLookups Off MaxClients 10000

Environment & Configuration INETS:HTTP Erlang 12B-5 and 13A erl +K true +h 1600 Kernel polling and heap size per process Max Clients set to 300 Increasing beyond this seemed to degrade performance

Environment & Configuration Lighttpd 1.4.22 server.max-keep-alive-requests = 16 server.max-keep-alive-idle = 5 server.max-read-idle = 60 server.max-write-idle = 360 server.event-handler = "linux-sysepoll" server.network-backend = "linux-sendfile" server.max-fds = 10000 server.max-connections = 10000 server.max-worker = 2

Environment & Configuration MochiWeb Erlang 12B-5 and 13A erl +K true +h 1600 Code Changes Added garbage_collect() to cleanup function in mochiweb_request.erl Set max=5120 to socket server record in mochiweb_socket_server.erl

Environment & Configuration Nginx 0.7.43 worker_processes 2 worker_connections 5120 sendfile on keepalive_timeout 65

Environment & Configuration Yaws 1.81 Erlang 12B-5 and 13A erl +S 4 +h 1600 Four schedulers Kernel polling is on by default Turning off logging improves performance access_log = false Sendfile serves small files (<4k) in memory

Results INETS maxes out just over 3000 replies/s MochiWeb maxes out around 4300 replies/s

Results INETS seems to be consistent albeit slow MochiWeb is inconsistent at 5000 replies/s

Results Similar to the other metrics INETS and MochiWeb have issues at the 4000 and 5000 level

Results Nginx and Lighttpd use the least CPU The Erlang servers seem to use more

Results Load was low with all servers Yaws was the highest with 1.4

Results Yaws causes a high level of interrupts and context switches

Results MochiWeb and INETS had very high pgfree/s Usually the sign of creating and destroying processes

Experimental Tests MochiWeb seems to have issues reading files from the filesystem

Results MochiWeb and INETS improve with 13A

Results Consistency improved with 13A for MochiWeb

Results Response times dropped for both INETS and MochiWeb

Results Yaws CPU usage increases with 13A MochiWeb and INETS do well with 13A

Results Decreased context switches and interrupts across the board with 13A

Take Home Yaws, Nginx, Lighttpd and Apache all perform well in this test Erlang based servers used more CPU than I expected Overall 13A helps performance across the board Test them out in your environment and work load

Take Home Apache Compile with non-portable atomics Make sure max clients is set high enough INETS Increasing max clients causes more harm than good Maxes out around 3500 requests a second Lighttpd Performs well with low CPU usage Epoll, send file, FD's and keep alives are key for performance

Take Home MochiWeb Not built for serving file serving Otherwise performs very well Setting GC in clean up function and high connection limit help performance Nginx Performed best, fast by default Yaws Turning off access logs helps greatly

Thanks Steve Vinoski and Claes Wikstrom with the Yaws project Bob Ippolito creator of MochiWeb