SlideShare una empresa de Scribd logo
1 de 63
Descargar para leer sin conexión
Battle of the
Stacks
by Nic Rosental!
@nicdev
Image by Cosmopolitan of Las Vegas https://www.flickr.com/photos/thecosmopolitan/
!
!
!
noun
noun: stack; plural noun: stacks
1.
a pile of objects, typically one that is neatly arranged.
"a stack of boxes"
synonyms: heap, pile, mound, mountain, pyramid, tower
"a stack of boxes"
informal
a large quantity of something.
"there's stacks of work for me now"
a rectangular or cylindrical pile of hay or straw or of grain in sheaf.
synonyms: haystack, rick, hayrick, mow, shock, haycock; datedcock
"a stack of hay"
a vertical arrangement of stereo or guitar amplification equipment.
a number of aircraft flying in circles at different altitudes around the same point while
waiting for permission to land at an airport.
a pyramidal group of rifles.
units of shelving in part of a library, used to store books compactly.
plural noun: the stacks
COMPUTING
a set of storage locations that store data in such a way that the most recently stored
item is the first to be retrieved.
2.
a chimney, especially one on a factory, or a vertical exhaust pipe on a vehicle.
synonyms: chimney, smokestack, funnel, exhaust pipe
a column of rock standing in the sea, remaining after erosion of cliffs.
noun: sea stack; plural noun: sea stacks
Stacks
Image by K.G.23 https://www.flickr.com/photos/kg-23/12846731134
The components that
make up your
application. From the
web server software
all the way to the code.
Image by Juhan Sonin https://www.flickr.com/photos/juhansonin/
Performance means
speed and reliability
Image by cle0patra https://www.flickr.com/photos/cle0patra/
More hardware
Image by S Jones https://www.flickr.com/photos/pixeljones/
The Setup
Image by afromusing https://www.flickr.com/photos/afropicmusing/
LAMP Stack
Image by Cosmopolitan of Las Vegas https://www.flickr.com/photos/thecosmopolitan/
Prefork!
vs!
Worker!
vs!
Event
Image by Allen McGregor https://www.flickr.com/photos/allenmcgregor/
LAMP Stack!
Apache 2.4 Prefork
Image by Peter Miller https://www.flickr.com/photos/pmillera4/
MaxRequestWorkers = 512MB / 22.5MB!
~23 MaxRequestWorkers
LAMP Stack!
Apache 2.2 Prefork
Image by Nerissa Villas https://www.flickr.com/photos/envypictures/
MaxClients = 512MB / 13MB!
!
~28 MaxClients
LAMP Stack!
Apache 2.4 Worker +!
PHP-FPM
Image by Image by Peter Miller https://www.flickr.com/photos/sumaryanto-bronto/
MaxRequestWorkers = 512MB / 8MB!
~64 MaxRequestWorkers
LAMP Stack!
Apache 2.4 Event +!
PHP-FPM
Image by Arne Halvorsen https://www.flickr.com/photos/arne-halvorsen/
MaxRequestWorkers = 512MB / 4MB!
!
~128 MaxRequestWorkers
LEMP Stack
Image by Christa Lohman https://www.flickr.com/photos/chloeloe/
HHVM
Image by Andrew Siguenza https://www.flickr.com/photos/photo-knight/
HHVM + Apache 2.4!
HHVM + NGINX
Image by Michael Coté https://www.flickr.com/photos/cote/
Lighttpd!
AKA Lighty
Image by JayRaz https://www.flickr.com/photos/shnakepup/
Let the battle begin!
Image by Paul Kitchener https://www.flickr.com/photos/pmillera4/
Each stack gets paired against another stack randomly in
a playoff format.!
!
Each stack gets a vanilla installation of WordPress to be
used as target.!
!
Each stack is tested using Loader.io.!
!
The stack with better response time moves on to the next
round.!
!
Each rounds’ test is progressively harder than the last.!
!
The winner of the third round will be crowned Last Stack
Standing
Apache 2.2 Prefork
Apache 2.4 Worker + FPM
HHVM + NGINX
LAMP Apache 2.4 Event + FPM
Lighty + FPM
LEMP
LAMP Apache 2.4 Prefork
HHVM + Apache 2.4
60 clients/60 seconds
LAMP Apache 2.2 Prefork!
!
Vs.!
!
LAMP Apache 2.4 Worker + FPM
http://ldr.io/1ogrzVi
http://ldr.io/ZI8Sya
LAMP Apache 2.4 Worker + FPM
LAMP Apache 2.2 Prefork
Response time: 163ms
Response time: 60ms
HHVM + NGINX!
!
vs!
!
LAMP Apache 2.4 Event + FPM
http://ldr.io/ZzETbj
http://ldr.io/1nu476f
Response time: 32ms
Response time: 65ms
HHVM + NGINX
LAMP Apache 2.4 Event + FPM
Lighty + FPM!
!
vs!
!
LEMP (NGINX + FPM)!
http://ldr.io/1ogzbau
http://ldr.io/1y3bjqM
Response time: 50ms
Response time: 44ms
Lighty + FPM
LEMP (NGINX + FPM)
LAMP Apache 2.4 Prefork!
!
vs!
!
HHVM + Apache 2.4!
!
http://ldr.io/1DjdQAj
http://ldr.io/ZzKpKX
Response time: 82ms
Response time: 30ms
LAMP Apache 2.4 Prefork
HHVM + Apache 2.4
LAMP Apache 2.4
Worker + FPM
HHVM + NGINX
HHVM + Apache 2.4
LEMP
120 clients/60 seconds
LAMP Apache 2.4 Worker + FPM!
!
vs!
!
HHVM + NGINX!
!
http://ldr.io/1sRdwW8
http://ldr.io/1nuaKpk
Response time: 85ms
Response time: 31ms
LAMP Apache 2.4 Worker + FPM
HHVM + NGINX
LEMP!
!
vs!
!
HHVM + Apache 2.4!
!
http://ldr.io/ZzGVbp
http://ldr.io/1nuhTWE
Response time: 60ms
Response time: 29ms
LEMP
HHVM + Apache 2.4
HHVM + NGINX
HHVM + APACHE 2.4
480 clients/60 seconds
HHVM + NGINX!
!
vs!
!
HHVM + Apache 2.4!
!
http://ldr.io/1ogvD7X
http://ldr.io/1ogD7b3
Response time: 76ms
Response time: 60ms
HHVM + NGINX
HHVM + Apache 2.4
Image by Articularnos.com https://www.flickr.com/photos/articularnos/
Champion of the !
Battle Of The Stacks
ATO Edition
HHVM + Apache 2.4
Image by yamchildht tps://www.flickr.com/photos/yamchild/
Test the limits
!
HHVM + Apache 2.4!
! http://ldr.io/1w6dtrZ
Response time: 6210ms
HHVM + Apache 2.4
Successful responses: 2148
Errors: 8 (0.4%)
Key Takeaways
Image by János Csongor Kerekes https://www.flickr.com/photos/kjcs/
Thanks, Chris Fidao!
@fideloper
Thanks y’all
Image by Trey Ratcliff https://www.flickr.com/photos/stuckincustoms/
Get in touch!
nic@epiclabs.com!
@nicdev!
!
Get the slides!
https://speakerdeck.com/nicdev
Image by Brocco https://www.flickr.com/photos/brocco_lee/

Más contenido relacionado

La actualidad más candente

DevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry PiDevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry Pi
Akshay Karle
 

La actualidad más candente (20)

Release with confidence
Release with confidenceRelease with confidence
Release with confidence
 
Loophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in ChromeLoophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in Chrome
 
Hands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ OsakaHands-on VeriFast with STM32 microcontroller @ Osaka
Hands-on VeriFast with STM32 microcontroller @ Osaka
 
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
JDO 2019: Serverless Hype Driven Development - Grzegorz Piotrowski
 
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...
 
Testing For Unicorns [IMWorld]
Testing For Unicorns [IMWorld] Testing For Unicorns [IMWorld]
Testing For Unicorns [IMWorld]
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)
 
Stop js-1999
Stop js-1999Stop js-1999
Stop js-1999
 
Concurrency in Python
Concurrency in PythonConcurrency in Python
Concurrency in Python
 
Discovering Volume Plugins with Applications using Docker Toolbox and VirtualBox
Discovering Volume Plugins with Applications using Docker Toolbox and VirtualBoxDiscovering Volume Plugins with Applications using Docker Toolbox and VirtualBox
Discovering Volume Plugins with Applications using Docker Toolbox and VirtualBox
 
DevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry PiDevOps Days India 2013: Build Radiator on Raspberry Pi
DevOps Days India 2013: Build Radiator on Raspberry Pi
 
A Partial Multiverse Model of Time Travel for Debugging
A Partial Multiverse Model of Time Travel for DebuggingA Partial Multiverse Model of Time Travel for Debugging
A Partial Multiverse Model of Time Travel for Debugging
 
Ruby Concurrency and EventMachine
Ruby Concurrency and EventMachineRuby Concurrency and EventMachine
Ruby Concurrency and EventMachine
 
rioinfo2012
rioinfo2012rioinfo2012
rioinfo2012
 
Orchestrated Functional Testing with Puppet-spec and Mspectator - PuppetConf ...
Orchestrated Functional Testing with Puppet-spec and Mspectator - PuppetConf ...Orchestrated Functional Testing with Puppet-spec and Mspectator - PuppetConf ...
Orchestrated Functional Testing with Puppet-spec and Mspectator - PuppetConf ...
 
Domains!
Domains!Domains!
Domains!
 
Mocks, Stubs and Fakes. ¿What Else?
Mocks, Stubs and Fakes. ¿What Else?Mocks, Stubs and Fakes. ¿What Else?
Mocks, Stubs and Fakes. ¿What Else?
 
Why async matters
Why async mattersWhy async matters
Why async matters
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
 
Test Driven Development with Puppet - PuppetConf 2014
Test Driven Development with Puppet - PuppetConf 2014Test Driven Development with Puppet - PuppetConf 2014
Test Driven Development with Puppet - PuppetConf 2014
 

Destacado

Destacado (20)

What Does Big Data Really Mean for Your Business?
What Does Big Data Really Mean for Your Business?What Does Big Data Really Mean for Your Business?
What Does Big Data Really Mean for Your Business?
 
Considerations for Operating an OpenStack Cloud
Considerations for Operating an OpenStack CloudConsiderations for Operating an OpenStack Cloud
Considerations for Operating an OpenStack Cloud
 
Stop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case StudyStop Worrying & Love the SQL - A Case Study
Stop Worrying & Love the SQL - A Case Study
 
Developing Apps for Google Glass Using Javascript & Ruby
Developing Apps for Google Glass Using Javascript & RubyDeveloping Apps for Google Glass Using Javascript & Ruby
Developing Apps for Google Glass Using Javascript & Ruby
 
Sustainable Open Data Markets
Sustainable Open Data MarketsSustainable Open Data Markets
Sustainable Open Data Markets
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
Giving a URL to All Objects using Beacons²
Giving a URL to All Objects using Beacons²Giving a URL to All Objects using Beacons²
Giving a URL to All Objects using Beacons²
 
Trademarks and Your Free and Open Source Software Project
Trademarks and Your Free and Open Source Software ProjectTrademarks and Your Free and Open Source Software Project
Trademarks and Your Free and Open Source Software Project
 
The Gurubox Project: Open Source Troubleshooting Tools
The Gurubox Project: Open Source Troubleshooting ToolsThe Gurubox Project: Open Source Troubleshooting Tools
The Gurubox Project: Open Source Troubleshooting Tools
 
Building the iRODS Consortium
Building the iRODS ConsortiumBuilding the iRODS Consortium
Building the iRODS Consortium
 
Marketing is not all fluff; engineering is not all math
Marketing is not all fluff; engineering is not all mathMarketing is not all fluff; engineering is not all math
Marketing is not all fluff; engineering is not all math
 
Ansible - 1,000,000 Downloads and Counting
Ansible - 1,000,000 Downloads and CountingAnsible - 1,000,000 Downloads and Counting
Ansible - 1,000,000 Downloads and Counting
 
The Anti-Henry Ford: How 200 hour discoveries revolutionized the way we do bu...
The Anti-Henry Ford: How 200 hour discoveries revolutionized the way we do bu...The Anti-Henry Ford: How 200 hour discoveries revolutionized the way we do bu...
The Anti-Henry Ford: How 200 hour discoveries revolutionized the way we do bu...
 
Open Source in Healthcare
Open Source in HealthcareOpen Source in Healthcare
Open Source in Healthcare
 
Clojure: Simple By Design
Clojure: Simple By DesignClojure: Simple By Design
Clojure: Simple By Design
 
JavaScript and Internet Controlled Hardware Prototyping
JavaScript and Internet Controlled Hardware PrototypingJavaScript and Internet Controlled Hardware Prototyping
JavaScript and Internet Controlled Hardware Prototyping
 
Great Artists (Designers) Steal
Great Artists (Designers) StealGreat Artists (Designers) Steal
Great Artists (Designers) Steal
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 
Software Development as a Civic Service
Software Development as a Civic ServiceSoftware Development as a Civic Service
Software Development as a Civic Service
 
Version Control and Git - GitHub Workshop
Version Control and Git - GitHub WorkshopVersion Control and Git - GitHub Workshop
Version Control and Git - GitHub Workshop
 

Similar a Battle of the Stacks

ChefConf 2012 Spiceweasel
ChefConf 2012 SpiceweaselChefConf 2012 Spiceweasel
ChefConf 2012 Spiceweasel
Matt Ray
 
Deploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRubyDeploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRuby
Joe Kutner
 
Socket applications
Socket applicationsSocket applications
Socket applications
João Moura
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
tobiascrawley
 
Deploying JRuby Web Applications
Deploying JRuby Web ApplicationsDeploying JRuby Web Applications
Deploying JRuby Web Applications
Joe Kutner
 

Similar a Battle of the Stacks (20)

Transforming WebSockets
Transforming WebSocketsTransforming WebSockets
Transforming WebSockets
 
ChefConf 2012 Spiceweasel
ChefConf 2012 SpiceweaselChefConf 2012 Spiceweasel
ChefConf 2012 Spiceweasel
 
gunicorn introduction
gunicorn introductiongunicorn introduction
gunicorn introduction
 
[Tokyo Scala User Group] Akka Streams & Reactive Streams (0.7)
[Tokyo Scala User Group] Akka Streams & Reactive Streams (0.7)[Tokyo Scala User Group] Akka Streams & Reactive Streams (0.7)
[Tokyo Scala User Group] Akka Streams & Reactive Streams (0.7)
 
20190705 py data_paris_meetup
20190705 py data_paris_meetup20190705 py data_paris_meetup
20190705 py data_paris_meetup
 
Deploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRubyDeploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRuby
 
Stop Reinventing The Wheel - The Ruby Standard Library
Stop Reinventing The Wheel - The Ruby Standard LibraryStop Reinventing The Wheel - The Ruby Standard Library
Stop Reinventing The Wheel - The Ruby Standard Library
 
Rugged Driven Development with Gauntlt
Rugged Driven Development with GauntltRugged Driven Development with Gauntlt
Rugged Driven Development with Gauntlt
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
Kubernates를 위한 Chaos Engineering in Action :: 윤석찬 (AWS 테크에반젤리스트)
Kubernates를 위한 Chaos Engineering in Action :: 윤석찬 (AWS 테크에반젤리스트) Kubernates를 위한 Chaos Engineering in Action :: 윤석찬 (AWS 테크에반젤리스트)
Kubernates를 위한 Chaos Engineering in Action :: 윤석찬 (AWS 테크에반젤리스트)
 
What is Rack Hijacking API
What is Rack Hijacking APIWhat is Rack Hijacking API
What is Rack Hijacking API
 
Torquebox OSCON Java 2011
Torquebox OSCON Java 2011Torquebox OSCON Java 2011
Torquebox OSCON Java 2011
 
Deploying JRuby Web Applications
Deploying JRuby Web ApplicationsDeploying JRuby Web Applications
Deploying JRuby Web Applications
 
Greyhound - Powerful Functional Kafka Library - Devtalks reimagined
Greyhound - Powerful Functional Kafka Library - Devtalks reimaginedGreyhound - Powerful Functional Kafka Library - Devtalks reimagined
Greyhound - Powerful Functional Kafka Library - Devtalks reimagined
 
Beware the potholes on the road to serverless
Beware the potholes on the road to serverlessBeware the potholes on the road to serverless
Beware the potholes on the road to serverless
 
Using ArcGIS Server with Ruby on Rails
Using ArcGIS Server with Ruby on RailsUsing ArcGIS Server with Ruby on Rails
Using ArcGIS Server with Ruby on Rails
 
Event Streaming with Kafka Streams, Spring Kafka and Actuator
Event Streaming with Kafka Streams, Spring Kafka and ActuatorEvent Streaming with Kafka Streams, Spring Kafka and Actuator
Event Streaming with Kafka Streams, Spring Kafka and Actuator
 
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
 
Infrastructure Fuzzing
Infrastructure FuzzingInfrastructure Fuzzing
Infrastructure Fuzzing
 
Ellak JavaScript Day
Ellak JavaScript DayEllak JavaScript Day
Ellak JavaScript Day
 

Más de All Things Open

Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public Policy
All Things Open
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
All Things Open
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart Contract
All Things Open
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with Background
All Things Open
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open Source
All Things Open
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in control
All Things Open
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
All Things Open
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
All Things Open
 

Más de All Things Open (20)

Building Reliability - The Realities of Observability
Building Reliability - The Realities of ObservabilityBuilding Reliability - The Realities of Observability
Building Reliability - The Realities of Observability
 
Modern Database Best Practices
Modern Database Best PracticesModern Database Best Practices
Modern Database Best Practices
 
Open Source and Public Policy
Open Source and Public PolicyOpen Source and Public Policy
Open Source and Public Policy
 
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
Weaving Microservices into a Unified GraphQL Schema with graph-quilt - Ashpak...
 
The State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil NashThe State of Passwordless Auth on the Web - Phil Nash
The State of Passwordless Auth on the Web - Phil Nash
 
Total ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScriptTotal ReDoS: The dangers of regex in JavaScript
Total ReDoS: The dangers of regex in JavaScript
 
What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?What Does Real World Mass Adoption of Decentralized Tech Look Like?
What Does Real World Mass Adoption of Decentralized Tech Look Like?
 
How to Write & Deploy a Smart Contract
How to Write & Deploy a Smart ContractHow to Write & Deploy a Smart Contract
How to Write & Deploy a Smart Contract
 
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
Spinning Your Drones with Cadence Workflows, Apache Kafka and TensorFlow
 
DEI Challenges and Success
DEI Challenges and SuccessDEI Challenges and Success
DEI Challenges and Success
 
Scaling Web Applications with Background
Scaling Web Applications with BackgroundScaling Web Applications with Background
Scaling Web Applications with Background
 
Supercharging tutorials with WebAssembly
Supercharging tutorials with WebAssemblySupercharging tutorials with WebAssembly
Supercharging tutorials with WebAssembly
 
Using SQL to Find Needles in Haystacks
Using SQL to Find Needles in HaystacksUsing SQL to Find Needles in Haystacks
Using SQL to Find Needles in Haystacks
 
Configuration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit InterceptConfiguration Security as a Game of Pursuit Intercept
Configuration Security as a Game of Pursuit Intercept
 
Scaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship ProgramScaling an Open Source Sponsorship Program
Scaling an Open Source Sponsorship Program
 
Build Developer Experience Teams for Open Source
Build Developer Experience Teams for Open SourceBuild Developer Experience Teams for Open Source
Build Developer Experience Teams for Open Source
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache Beam
 
Sudo – Giving access while staying in control
Sudo – Giving access while staying in controlSudo – Giving access while staying in control
Sudo – Giving access while staying in control
 
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML ApplicationsFortifying the Future: Tackling Security Challenges in AI/ML Applications
Fortifying the Future: Tackling Security Challenges in AI/ML Applications
 
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
Securing Cloud Resources Deployed with Control Planes on Kubernetes using Gov...
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Battle of the Stacks

  • 1. Battle of the Stacks by Nic Rosental! @nicdev Image by Cosmopolitan of Las Vegas https://www.flickr.com/photos/thecosmopolitan/
  • 2. ! ! ! noun noun: stack; plural noun: stacks 1. a pile of objects, typically one that is neatly arranged. "a stack of boxes" synonyms: heap, pile, mound, mountain, pyramid, tower "a stack of boxes" informal a large quantity of something. "there's stacks of work for me now" a rectangular or cylindrical pile of hay or straw or of grain in sheaf. synonyms: haystack, rick, hayrick, mow, shock, haycock; datedcock "a stack of hay" a vertical arrangement of stereo or guitar amplification equipment. a number of aircraft flying in circles at different altitudes around the same point while waiting for permission to land at an airport. a pyramidal group of rifles. units of shelving in part of a library, used to store books compactly. plural noun: the stacks COMPUTING a set of storage locations that store data in such a way that the most recently stored item is the first to be retrieved. 2. a chimney, especially one on a factory, or a vertical exhaust pipe on a vehicle. synonyms: chimney, smokestack, funnel, exhaust pipe a column of rock standing in the sea, remaining after erosion of cliffs. noun: sea stack; plural noun: sea stacks Stacks Image by K.G.23 https://www.flickr.com/photos/kg-23/12846731134
  • 3. The components that make up your application. From the web server software all the way to the code. Image by Juhan Sonin https://www.flickr.com/photos/juhansonin/
  • 4. Performance means speed and reliability Image by cle0patra https://www.flickr.com/photos/cle0patra/
  • 5. More hardware Image by S Jones https://www.flickr.com/photos/pixeljones/
  • 6. The Setup Image by afromusing https://www.flickr.com/photos/afropicmusing/
  • 7. LAMP Stack Image by Cosmopolitan of Las Vegas https://www.flickr.com/photos/thecosmopolitan/
  • 8.
  • 9.
  • 10. Prefork! vs! Worker! vs! Event Image by Allen McGregor https://www.flickr.com/photos/allenmcgregor/
  • 11. LAMP Stack! Apache 2.4 Prefork Image by Peter Miller https://www.flickr.com/photos/pmillera4/
  • 12.
  • 13. MaxRequestWorkers = 512MB / 22.5MB! ~23 MaxRequestWorkers
  • 14.
  • 15. LAMP Stack! Apache 2.2 Prefork Image by Nerissa Villas https://www.flickr.com/photos/envypictures/
  • 16.
  • 17. MaxClients = 512MB / 13MB! ! ~28 MaxClients
  • 18.
  • 19. LAMP Stack! Apache 2.4 Worker +! PHP-FPM Image by Image by Peter Miller https://www.flickr.com/photos/sumaryanto-bronto/
  • 20.
  • 21. MaxRequestWorkers = 512MB / 8MB! ~64 MaxRequestWorkers
  • 22.
  • 23. LAMP Stack! Apache 2.4 Event +! PHP-FPM Image by Arne Halvorsen https://www.flickr.com/photos/arne-halvorsen/
  • 24.
  • 25. MaxRequestWorkers = 512MB / 4MB! ! ~128 MaxRequestWorkers
  • 26.
  • 27. LEMP Stack Image by Christa Lohman https://www.flickr.com/photos/chloeloe/
  • 28.
  • 29. HHVM Image by Andrew Siguenza https://www.flickr.com/photos/photo-knight/
  • 30. HHVM + Apache 2.4! HHVM + NGINX Image by Michael Coté https://www.flickr.com/photos/cote/
  • 31.
  • 32.
  • 33. Lighttpd! AKA Lighty Image by JayRaz https://www.flickr.com/photos/shnakepup/
  • 34. Let the battle begin! Image by Paul Kitchener https://www.flickr.com/photos/pmillera4/
  • 35. Each stack gets paired against another stack randomly in a playoff format.! ! Each stack gets a vanilla installation of WordPress to be used as target.! ! Each stack is tested using Loader.io.! ! The stack with better response time moves on to the next round.! ! Each rounds’ test is progressively harder than the last.! ! The winner of the third round will be crowned Last Stack Standing
  • 36.
  • 37.
  • 38.
  • 39. Apache 2.2 Prefork Apache 2.4 Worker + FPM HHVM + NGINX LAMP Apache 2.4 Event + FPM Lighty + FPM LEMP LAMP Apache 2.4 Prefork HHVM + Apache 2.4 60 clients/60 seconds
  • 40. LAMP Apache 2.2 Prefork! ! Vs.! ! LAMP Apache 2.4 Worker + FPM http://ldr.io/1ogrzVi http://ldr.io/ZI8Sya
  • 41. LAMP Apache 2.4 Worker + FPM LAMP Apache 2.2 Prefork Response time: 163ms Response time: 60ms
  • 42. HHVM + NGINX! ! vs! ! LAMP Apache 2.4 Event + FPM http://ldr.io/ZzETbj http://ldr.io/1nu476f
  • 43. Response time: 32ms Response time: 65ms HHVM + NGINX LAMP Apache 2.4 Event + FPM
  • 44. Lighty + FPM! ! vs! ! LEMP (NGINX + FPM)! http://ldr.io/1ogzbau http://ldr.io/1y3bjqM
  • 45. Response time: 50ms Response time: 44ms Lighty + FPM LEMP (NGINX + FPM)
  • 46. LAMP Apache 2.4 Prefork! ! vs! ! HHVM + Apache 2.4! ! http://ldr.io/1DjdQAj http://ldr.io/ZzKpKX
  • 47. Response time: 82ms Response time: 30ms LAMP Apache 2.4 Prefork HHVM + Apache 2.4
  • 48. LAMP Apache 2.4 Worker + FPM HHVM + NGINX HHVM + Apache 2.4 LEMP 120 clients/60 seconds
  • 49. LAMP Apache 2.4 Worker + FPM! ! vs! ! HHVM + NGINX! ! http://ldr.io/1sRdwW8 http://ldr.io/1nuaKpk
  • 50. Response time: 85ms Response time: 31ms LAMP Apache 2.4 Worker + FPM HHVM + NGINX
  • 51. LEMP! ! vs! ! HHVM + Apache 2.4! ! http://ldr.io/ZzGVbp http://ldr.io/1nuhTWE
  • 52. Response time: 60ms Response time: 29ms LEMP HHVM + Apache 2.4
  • 53. HHVM + NGINX HHVM + APACHE 2.4 480 clients/60 seconds
  • 54. HHVM + NGINX! ! vs! ! HHVM + Apache 2.4! ! http://ldr.io/1ogvD7X http://ldr.io/1ogD7b3
  • 55. Response time: 76ms Response time: 60ms HHVM + NGINX HHVM + Apache 2.4
  • 56. Image by Articularnos.com https://www.flickr.com/photos/articularnos/ Champion of the ! Battle Of The Stacks ATO Edition HHVM + Apache 2.4
  • 57. Image by yamchildht tps://www.flickr.com/photos/yamchild/ Test the limits
  • 58. ! HHVM + Apache 2.4! ! http://ldr.io/1w6dtrZ
  • 59. Response time: 6210ms HHVM + Apache 2.4 Successful responses: 2148 Errors: 8 (0.4%)
  • 60. Key Takeaways Image by János Csongor Kerekes https://www.flickr.com/photos/kjcs/
  • 62. Thanks y’all Image by Trey Ratcliff https://www.flickr.com/photos/stuckincustoms/
  • 63. Get in touch! nic@epiclabs.com! @nicdev! ! Get the slides! https://speakerdeck.com/nicdev Image by Brocco https://www.flickr.com/photos/brocco_lee/