SlideShare a Scribd company logo
1 of 30
Download to read offline
Jim Jagielski
Apache httpd v2.4:
What’s New,
Pussycat?
This should
be pretty good!
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
About me
➡ Jim Jagielski
➡ Hacker and developer
➡ Wearer o’ many hats at the ASF

➡ Director and President: Outercurve

➡ Council member: MARSEC-XL
!
➡ Consulting Engineer with Red Hat
!
➡ @jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
httpd is sooo old school (aka fud)
➡ Apache doesn’t scale (its SLOW)
➡ http://www.youtube.com/watch?v=bzkRVzciAZg



➡ Apache is too generalized





➡ Apache is too complex (config file)
➡ really?
➡ Apache is too old

(yeah, just like Linux)
vs
It’s Squagels!
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4 - design drivers
➡ New features and improve old ones
➡ Support for async I/O w/o dropping support for older systems
➡ Larger selection of usable MPMs: added Event, Simple, etc...
➡ Leverage higher-performant versions of APR
➡ Increase performance
➡ Reduce memory utilization
➡ The Cloud
Currently at version 2.4.9 (2.4.1 went GA Feb 21, 2012)
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s New: Apache httpd 2.4
➡ Performance Increases
➡ Configuration / Runtime Improvements
➡ New Modules / Capabilities
➡ Cloud / Proxy Enhancements
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Performance
➡ Event MPM : no longer experimental
➡ Faster, more efficient APR
➡ Smaller memory footprint
➡ More efficient data structures (worker and event)
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
nginx vs Event (typical)
Apache - Event MPM
0
500
1000
1500
2000
nginx
0
500
1,000
1,500
2,000
Open Write Read Close
Increasing concurrency Increasing concurrency
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Total req/resp time
Comparison - total transaction (close)
0
500
1000
1500
2000
Prefork Worker Event nginx
Increasing concurrency
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Resp to Req. Bursts - httperf100 ---> 10000
0.00
1.75
3.50
5.25
7.00
min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev
prefork worker event nginx
Increasing concurrency
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Independent benchmark
Source: Ryosuke Matsumoto : http://blog.matsumoto-r.jp/?p=1812
#!/bin/sh!
RESULT='./result.txt'!
 !
for port in 80 8080 8888!
do!
#for count in 1000 2000 3000 4000 5000 6000 7000 8000
9000 10000!
#for count in 11000 12000 13000 14000 15000 16000 17000
18000 19000 20000!
for count in 21000 22000 23000 24000 25000 26000 27000
28000 29000 30000!
do!
echo -n "$port $count " >> $RESULT!
httperf --rate $count --num-conns 25000 --server
ipaddr --port $port !
--uri=/test.html | grep "Request rate:" >>
$RESULT.$port!
sleep 60!
done!
done!
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Finer control of timeouts, esp. during requests
➡ mod_reqtimeout
➡ KeepAliveTimout down to the millisecond
➡ Finer control over logging
➡ per module/per directory
➡ new logging levels (TRACE[1-8])
LogLevel  info  ssl:warn  
<Directory  "/usr/local/apache/htdocs/foo">  
        LogLevel  debug  
</Directory>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ <If> supports per-request conditions
#  Compare  the  host  name  to  example.com  and    
#  redirect  to  www.example.com  if  it  matches  
<If  "%{HTTP_HOST}  ==  'example.com'">  
        Redirect  permanent  /  http://www.example.com/  
<ElseIf  "%{HTTP_HOST}  ==  ‘foobarfoo.com'">  
        Redirect  permanent  /  http://www2.example.com/  
</If>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Require
➡ Removes order/deny insanity!
AuthType  Basic  
AuthName  "Restricted  Resource"  
AuthBasicProvider  file  
AuthUserFile  /web/users  
AuthGroupFile  /web/groups  
Require  group  admin  
<Directory  /www/docs>  
        <RequireAll>  
                Require  group  alpha  beta  
                Require  not  group  reject  
        </RequireAll>  
</Directory>  
<Directory  /www/docs2>  
        Require  all  granted  
</Directory>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Simple config-file variables: <Define>
<IfDefine  TEST>  
    Define  servername  test.example.com  
</IfDefine>  
<IfDefine  !TEST>  
    Define  servername  www.example.com  
    Define  SSL  
</IfDefine>  
!
DocumentRoot  /var/www/${servername}/htdocs
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ Other stuff:
➡ General purpose expression parser (BNF compatible)
➡ No more NameVirtualHost
➡ Loadable MPM modules
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_macro
<Macro  VHost  $name  $domain>  
<VirtualHost  *:80>  
        ServerName  $domain  
        ServerAlias  www.$domain  
!
        DocumentRoot  /var/www/vhosts/$name  
        ErrorLog  /var/log/httpd/$name.error_log  
        CustomLog  /var/log/httpd/$name.access_log  combined  
</VirtualHost>  
</Macro>  
!
Use  VHost  example  example.com  
Use  VHost  myhost  hostname.org  
Use  VHost  apache  apache.org  
!
UndefMacro  VHost
From my
ApacheCon 2000
Preso
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Need More Info?
➡ Attend the next session!
➡ Rich Bowen @ 11:55am
➡ Configurable Configuration in httpd 2.4
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_lua (semi-experimental, but we use it!)
<Files  *.lua>  
        SetHandler  lua-­script  
</Files>  
…  
example.lua  
require  "string"  
function  handle(r)  
        r.content_type  =  "text/plain"  
!
        if  r.method  ==  'GET'  then  
                r:puts("Hello  Lua  World!n")  
                for  k,  v  in  pairs(  r:parseargs()  )  do  
                        r:puts(  string.format("%s:  %sn",  k,  v)  )  
                end  
        elseif  r.method  ==  'POST'  then  
                r:puts("Hello  Lua  World!n")  
                for  k,  v  in  pairs(  r:parsebody()  )  do  
                        r:puts(  string.format("%s:  %sn",  k,  v)  )  
                end  
        elseif  r.method  ==  'PUT'  then  
                r:puts("Unsupported  HTTP  method  "  ..  r.method)  
                r.status  =  405  
                return  apache2.ok  
        else  
              return  501  
        end  
        return  apache2.OK  
end
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Need More Info?
➡ Attend the latter session!
➡ Daniel Gruno @ 5:00pm
➡ (Re)Introducing mod_lua
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_proxy submodules:
➡ mod_proxy_fcgi
➡ mod_proxy_scgi
➡ mod_proxy_wtunnel
➡ mod_proxy_html
➡ mod_proxy_express
ProxyExpressEnable  on

ProxyExpressDBMFile  emap  
…  
##

##express-­map.txt:  httxt2dbm  -­i  express-­map.txt  -­o  emap

##



www1.example.com          http://192.168.002.2:8080

www2.example.com          http://192.168.002.12:8088

www3.example.com          http://192.168.002.10  
  ...  
www6341.example.com    http://192.168.211.26
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_buffer
➡ buffer the i/o stacks w/i httpd
➡ mod_sed
➡ True sed functionality, alternate to mod_substitute
➡ mod_remoteip
➡ allow access to the real client IP address
➡ mod_session
➡ easily maintain application server state
➡ …
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Cloud and Performance
➡ The Cloud is a game changer for web servers
➡ Horizontal scalability is no longer as painful
➡ Concurrency is no longer the sole consideration
➡ ... or maybe even the primary one
➡ What’s important now? Transaction Time! (because it CAN be)
➡ Low latency
➡ Fast req/resp turnover
➡ Does density still matter? Of course!
➡ Are there environs where super-mega concurrency is the bugaboo?
You betcha! (but the cloud makes these more and more rare, and you’re likely
using a bad architecture anyway)
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Cloud and Dynamics
➡ The Cloud is a game changer for web servers
➡ The cloud is a dynamic place
➡ automated reconfiguration
➡ horizontal, not vertical scaling
➡ self-aware environments
OK, maybe not THAT self-aware
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Why Dynamic Proxy Matters
➡ Apache httpd still the most frequently used front-end
➡ Proxy capabilities must be cloud friendly
➡ Front-end must be dynamic friendly
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4 proxy
➡ Reverse Proxy Improvements
➡ Supports FastCGI, SCGI, Websockets in balancer
➡ Additional load balancing mechanisms
➡ Runtime changing of clusters w/o restarts
➡ Support for dynamic configuration
➡ mod_proxy_express
➡ mod_fcgid and fcgistarter
➡ Brand New: Support for Unix Domain Sockets
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Putting it all together
<Proxy  balancer://foo>  
    BalancerMember  http://php1:8080/          loadfactor=1  
    BalancerMember  http://php2:8080/          loadfactor=4  
    BalancerMember  http://phpbkup:8080/    loadfactor=1  status=+h  
    BalancerMember  http://phpexp:8080/      lbset=1  
    ProxySet  lbmethod=bytraffic  
</Proxy>  
<Proxy  balancer://javaapps>  
    BalancerMember  ajp://tc1:8089/          loadfactor=1  
    BalancerMember  ajp://tc2:8089/          loadfactor=4  
    ProxySet  lbmethod=byrequests  
</Proxy>  
ProxyPass                /apps/                  balancer://foo/  
ProxyPassReverse  /apps/                  balancer://foo/  
ProxyPass                /serv/                  balancer://javaapps/  
ProxyPass                /images/              http://images:8080/  
ProxyPass                /foo                      unix:/home/www.socket|http://localhost/bar/
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
HeartBeat / HeartMonitor
➡ New LB (load balance) method
➡ Uses multicast between gateway and reverse proxies
➡ Provides heartbeat (are you there?) capability
➡ Also provides basic load info
➡ This info stored in shm, and used for balancing
➡ Multicast can be an issue
➡ Use mod_header with %l, %i, %b (loadavg, idle, busy)
➡ but no LBmethod currently uses this :(
➡ We need a universal “load” measure
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
balancer-manager
➡ Embedded proxy admin web interface
➡ Allows for real-time
➡ Monitoring of stats for each worker
➡ Adjustment of worker params
➡ Allows for real-time
➡ Addition of new workers/nodes
➡ Change of LB methods
➡ Can be persistent!
➡ More RESTful
➡ Can be CLI-driven
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Need More Info?
➡ Attend the upcoming sessions!
➡ Daniel Ruggeri today @ 3:00pm
➡ mod_proxy Cookbook
➡ Jeff Trawick tomorrow @ 10:30am
➡ Using FastCGI with Apache httpd 2.4
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Thanks
Twitter: @jimjag
Emails:


 
 jim@jaguNET.com


 
 jjagielski@outercurve.org


 
 jim@apache.org


 
 jimjag@redhat.com
http://www.slideshare.net/jimjag/

More Related Content

What's hot

PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance TuningPyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance TuningGraham Dumpleton
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
 
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9Ilya Grigorik
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabricandymccurdy
 
Docker Demo @ IuK Seminar
Docker Demo @ IuK SeminarDocker Demo @ IuK Seminar
Docker Demo @ IuK SeminarMartin Scharm
 
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet CampPuppet
 
"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr VronskiyFwdays
 
Hands on Docker - Launch your own LEMP or LAMP stack
Hands on Docker -  Launch your own LEMP or LAMP stackHands on Docker -  Launch your own LEMP or LAMP stack
Hands on Docker - Launch your own LEMP or LAMP stackDana Luther
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackMatt Ray
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web serverJim Jagielski
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Zend by Rogue Wave Software
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsBen Hall
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Tatsuhiko Miyagawa
 
Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011leo lapworth
 
0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-Services0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-ServicesIlya Grigorik
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleStein Inge Morisbak
 

What's hot (20)

PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance TuningPyCon US 2012 - Web Server Bottlenecks and Performance Tuning
PyCon US 2012 - Web Server Bottlenecks and Performance Tuning
 
Plack at OSCON 2010
Plack at OSCON 2010Plack at OSCON 2010
Plack at OSCON 2010
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQuery
 
Designing net-aws-glacier
Designing net-aws-glacierDesigning net-aws-glacier
Designing net-aws-glacier
 
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
 
Python Deployment with Fabric
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabric
 
Docker Demo @ IuK Seminar
Docker Demo @ IuK SeminarDocker Demo @ IuK Seminar
Docker Demo @ IuK Seminar
 
Intro to PSGI and Plack
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and Plack
 
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
 
Plack - LPW 2009
Plack - LPW 2009Plack - LPW 2009
Plack - LPW 2009
 
"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy"Swoole: double troubles in c", Alexandr Vronskiy
"Swoole: double troubles in c", Alexandr Vronskiy
 
Hands on Docker - Launch your own LEMP or LAMP stack
Hands on Docker -  Launch your own LEMP or LAMP stackHands on Docker -  Launch your own LEMP or LAMP stack
Hands on Docker - Launch your own LEMP or LAMP stack
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web server
 
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018) Speed up web APIs with Expressive and Swoole (PHP Day 2018)
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011Plack basics for Perl websites - YAPC::EU 2011
Plack basics for Perl websites - YAPC::EU 2011
 
0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-Services0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-Services
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 

Viewers also liked

Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Jim Jagielski
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source ProjectsJim Jagielski
 
Apache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer AppApache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer AppJim Jagielski
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source ManagementJim Jagielski
 
Three Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic NumberJim Jagielski
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source LicensesJim Jagielski
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and CommunitiesJim Jagielski
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4Jim Jagielski
 
Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache WayJim Jagielski
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"Jim Jagielski
 
Apache State of the Feather 2010
Apache State of the Feather 2010Apache State of the Feather 2010
Apache State of the Feather 2010Jim Jagielski
 
Three Shall Be The Number
Three Shall Be The NumberThree Shall Be The Number
Three Shall Be The NumberJim Jagielski
 
Open Source - Not just for IT anymore
Open Source - Not just for IT anymoreOpen Source - Not just for IT anymore
Open Source - Not just for IT anymoreJim Jagielski
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The FeatherJim Jagielski
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF SponsorshipJim Jagielski
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011Jim Jagielski
 
Acus08 Advanced Load Balancing Apache2.2
Acus08 Advanced Load Balancing Apache2.2Acus08 Advanced Load Balancing Apache2.2
Acus08 Advanced Load Balancing Apache2.2Jim Jagielski
 
Drupal Camp Balto 2015
Drupal Camp Balto 2015Drupal Camp Balto 2015
Drupal Camp Balto 2015Jim Jagielski
 
Code, Community, and Open Source
Code, Community, and Open SourceCode, Community, and Open Source
Code, Community, and Open SourceJim Jagielski
 
Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licensesJim Jagielski
 

Viewers also liked (20)

Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source Projects
 
Apache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer AppApache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer App
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source Management
 
Three Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic Number
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source Licenses
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and Communities
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4
 
Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache Way
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"
 
Apache State of the Feather 2010
Apache State of the Feather 2010Apache State of the Feather 2010
Apache State of the Feather 2010
 
Three Shall Be The Number
Three Shall Be The NumberThree Shall Be The Number
Three Shall Be The Number
 
Open Source - Not just for IT anymore
Open Source - Not just for IT anymoreOpen Source - Not just for IT anymore
Open Source - Not just for IT anymore
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The Feather
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF Sponsorship
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011
 
Acus08 Advanced Load Balancing Apache2.2
Acus08 Advanced Load Balancing Apache2.2Acus08 Advanced Load Balancing Apache2.2
Acus08 Advanced Load Balancing Apache2.2
 
Drupal Camp Balto 2015
Drupal Camp Balto 2015Drupal Camp Balto 2015
Drupal Camp Balto 2015
 
Code, Community, and Open Source
Code, Community, and Open SourceCode, Community, and Open Source
Code, Community, and Open Source
 
Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licenses
 

Similar to ApacheCon 2014 - What's New in Apache httpd 2.4

What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24Jim Jagielski
 
Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemApache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemJim Jagielski
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyJim Jagielski
 
ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4Jim Jagielski
 
Apache httpd 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overviewJim Jagielski
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Thijs Feryn
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindSam Keen
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversTatsuhiko Miyagawa
 
Apache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyApache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyJim Jagielski
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Thijs Feryn
 
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Codemotion
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Thijs Feryn
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariJoseph Scott
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with NginxBud Siddhisena
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with CapistranoRamazan K
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
 
High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”
High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”
High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”Valent Mustamin
 

Similar to ApacheCon 2014 - What's New in Apache httpd 2.4 (20)

What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24
 
Apache httpd v2.4
Apache httpd v2.4Apache httpd v2.4
Apache httpd v2.4
 
Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden GemApache HTTPD 2.4 Reverse Proxy: The Hidden Gem
Apache HTTPD 2.4 Reverse Proxy: The Hidden Gem
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
 
ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4
 
Apache httpd 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overview
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
 
Apache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyApache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse Proxy
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
 
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with Nginx
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with Capistrano
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
 
High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”
High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”
High Performance Wordpress: “Faster, Cheaper, Easier : Pick Three”
 

More from Jim Jagielski

OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023Jim Jagielski
 
Open Source Licenses and IP Overview
Open Source Licenses and IP OverviewOpen Source Licenses and IP Overview
Open Source Licenses and IP OverviewJim Jagielski
 
The History of The Apache Software Foundation
The History of The Apache Software FoundationThe History of The Apache Software Foundation
The History of The Apache Software FoundationJim Jagielski
 
Starting an Open Source Program Office
Starting an Open Source Program OfficeStarting an Open Source Program Office
Starting an Open Source Program OfficeJim Jagielski
 
InnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServInnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServJim Jagielski
 
All Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingAll Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingJim Jagielski
 
All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101Jim Jagielski
 
All Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceAll Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceJim Jagielski
 
ApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayJim Jagielski
 
Open Source Licensing 101
Open Source Licensing 101Open Source Licensing 101
Open Source Licensing 101Jim Jagielski
 
InnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayInnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayJim Jagielski
 
Keynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceKeynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceJim Jagielski
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceJim Jagielski
 
ApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherJim Jagielski
 
Open Source Licensing and Governance
Open Source Licensing and GovernanceOpen Source Licensing and Governance
Open Source Licensing and GovernanceJim Jagielski
 
Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.Jim Jagielski
 
The Apache Way: Why we do what we do
The Apache Way: Why we do what we doThe Apache Way: Why we do what we do
The Apache Way: Why we do what we doJim Jagielski
 
Why Community Matters
Why Community MattersWhy Community Matters
Why Community MattersJim Jagielski
 
Inner Source 101 - GWO2016
Inner Source 101 - GWO2016Inner Source 101 - GWO2016
Inner Source 101 - GWO2016Jim Jagielski
 

More from Jim Jagielski (20)

OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023
 
Open Source Licenses and IP Overview
Open Source Licenses and IP OverviewOpen Source Licenses and IP Overview
Open Source Licenses and IP Overview
 
The History of The Apache Software Foundation
The History of The Apache Software FoundationThe History of The Apache Software Foundation
The History of The Apache Software Foundation
 
The Apache Way
The Apache WayThe Apache Way
The Apache Way
 
Starting an Open Source Program Office
Starting an Open Source Program OfficeStarting an Open Source Program Office
Starting an Open Source Program Office
 
InnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServInnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServ
 
All Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingAll Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source Licensing
 
All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101
 
All Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceAll Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner Source
 
ApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache Way
 
Open Source Licensing 101
Open Source Licensing 101Open Source Licensing 101
Open Source Licensing 101
 
InnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayInnerSource 101 and The Apache Way
InnerSource 101 and The Apache Way
 
Keynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceKeynote from the Open Source 101 Conference
Keynote from the Open Source 101 Conference
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open Source
 
ApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the Feather
 
Open Source Licensing and Governance
Open Source Licensing and GovernanceOpen Source Licensing and Governance
Open Source Licensing and Governance
 
Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.
 
The Apache Way: Why we do what we do
The Apache Way: Why we do what we doThe Apache Way: Why we do what we do
The Apache Way: Why we do what we do
 
Why Community Matters
Why Community MattersWhy Community Matters
Why Community Matters
 
Inner Source 101 - GWO2016
Inner Source 101 - GWO2016Inner Source 101 - GWO2016
Inner Source 101 - GWO2016
 

Recently uploaded

Discussing Potential of Submarine Cables Causing Internet Blackout in Ghana
Discussing Potential of Submarine Cables Causing Internet Blackout in GhanaDiscussing Potential of Submarine Cables Causing Internet Blackout in Ghana
Discussing Potential of Submarine Cables Causing Internet Blackout in GhanaDesmond Israel
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteMavein
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxnaveenithkrishnan
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSlesteraporado16
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsRoxana Stingu
 
Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Shubham Pant
 
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024Jan Löffler
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfmchristianalwyn
 
Test Automation with Gen AI_Final_Presentation
Test Automation with Gen AI_Final_PresentationTest Automation with Gen AI_Final_Presentation
Test Automation with Gen AI_Final_PresentationUiPathCommunity
 
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSedrianrheine
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...APNIC
 
Aligning Testing Objectives with Overall Project Goals for Successful Outcome...
Aligning Testing Objectives with Overall Project Goals for Successful Outcome...Aligning Testing Objectives with Overall Project Goals for Successful Outcome...
Aligning Testing Objectives with Overall Project Goals for Successful Outcome...Anju21552
 
Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)
Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)
Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)Internet 2.0 Conference
 

Recently uploaded (13)

Discussing Potential of Submarine Cables Causing Internet Blackout in Ghana
Discussing Potential of Submarine Cables Causing Internet Blackout in GhanaDiscussing Potential of Submarine Cables Causing Internet Blackout in Ghana
Discussing Potential of Submarine Cables Causing Internet Blackout in Ghana
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a Website
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptx
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
 
Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024
 
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
 
Test Automation with Gen AI_Final_Presentation
Test Automation with Gen AI_Final_PresentationTest Automation with Gen AI_Final_Presentation
Test Automation with Gen AI_Final_Presentation
 
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
 
Aligning Testing Objectives with Overall Project Goals for Successful Outcome...
Aligning Testing Objectives with Overall Project Goals for Successful Outcome...Aligning Testing Objectives with Overall Project Goals for Successful Outcome...
Aligning Testing Objectives with Overall Project Goals for Successful Outcome...
 
Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)
Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)
Internet 2.0 Conference (Event Information Deck | Dec'24 - Mar'25)
 

ApacheCon 2014 - What's New in Apache httpd 2.4

  • 1. Jim Jagielski Apache httpd v2.4: What’s New, Pussycat? This should be pretty good!
  • 2. This work is licensed under a Creative Commons Attribution 3.0 Unported License. About me ➡ Jim Jagielski ➡ Hacker and developer ➡ Wearer o’ many hats at the ASF
 ➡ Director and President: Outercurve
 ➡ Council member: MARSEC-XL ! ➡ Consulting Engineer with Red Hat ! ➡ @jimjag
  • 3. This work is licensed under a Creative Commons Attribution 3.0 Unported License. httpd is sooo old school (aka fud) ➡ Apache doesn’t scale (its SLOW) ➡ http://www.youtube.com/watch?v=bzkRVzciAZg
 
 ➡ Apache is too generalized
 
 
 ➡ Apache is too complex (config file) ➡ really? ➡ Apache is too old
 (yeah, just like Linux) vs It’s Squagels!
  • 4. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache httpd 2.4 - design drivers ➡ New features and improve old ones ➡ Support for async I/O w/o dropping support for older systems ➡ Larger selection of usable MPMs: added Event, Simple, etc... ➡ Leverage higher-performant versions of APR ➡ Increase performance ➡ Reduce memory utilization ➡ The Cloud Currently at version 2.4.9 (2.4.1 went GA Feb 21, 2012)
  • 5. This work is licensed under a Creative Commons Attribution 3.0 Unported License. What’s New: Apache httpd 2.4 ➡ Performance Increases ➡ Configuration / Runtime Improvements ➡ New Modules / Capabilities ➡ Cloud / Proxy Enhancements
  • 6. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Performance ➡ Event MPM : no longer experimental ➡ Faster, more efficient APR ➡ Smaller memory footprint ➡ More efficient data structures (worker and event)
  • 7. This work is licensed under a Creative Commons Attribution 3.0 Unported License. nginx vs Event (typical) Apache - Event MPM 0 500 1000 1500 2000 nginx 0 500 1,000 1,500 2,000 Open Write Read Close Increasing concurrency Increasing concurrency
  • 8. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Total req/resp time Comparison - total transaction (close) 0 500 1000 1500 2000 Prefork Worker Event nginx Increasing concurrency
  • 9. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Resp to Req. Bursts - httperf100 ---> 10000 0.00 1.75 3.50 5.25 7.00 min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev min avg max dev prefork worker event nginx Increasing concurrency
  • 10. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Independent benchmark Source: Ryosuke Matsumoto : http://blog.matsumoto-r.jp/?p=1812 #!/bin/sh! RESULT='./result.txt'!  ! for port in 80 8080 8888! do! #for count in 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000! #for count in 11000 12000 13000 14000 15000 16000 17000 18000 19000 20000! for count in 21000 22000 23000 24000 25000 26000 27000 28000 29000 30000! do! echo -n "$port $count " >> $RESULT! httperf --rate $count --num-conns 25000 --server ipaddr --port $port ! --uri=/test.html | grep "Request rate:" >> $RESULT.$port! sleep 60! done! done!
  • 11. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ Finer control of timeouts, esp. during requests ➡ mod_reqtimeout ➡ KeepAliveTimout down to the millisecond ➡ Finer control over logging ➡ per module/per directory ➡ new logging levels (TRACE[1-8]) LogLevel  info  ssl:warn   <Directory  "/usr/local/apache/htdocs/foo">          LogLevel  debug   </Directory>
  • 12. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ <If> supports per-request conditions #  Compare  the  host  name  to  example.com  and     #  redirect  to  www.example.com  if  it  matches   <If  "%{HTTP_HOST}  ==  'example.com'">          Redirect  permanent  /  http://www.example.com/   <ElseIf  "%{HTTP_HOST}  ==  ‘foobarfoo.com'">          Redirect  permanent  /  http://www2.example.com/   </If>
  • 13. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ Require ➡ Removes order/deny insanity! AuthType  Basic   AuthName  "Restricted  Resource"   AuthBasicProvider  file   AuthUserFile  /web/users   AuthGroupFile  /web/groups   Require  group  admin   <Directory  /www/docs>          <RequireAll>                  Require  group  alpha  beta                  Require  not  group  reject          </RequireAll>   </Directory>   <Directory  /www/docs2>          Require  all  granted   </Directory>
  • 14. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ Simple config-file variables: <Define> <IfDefine  TEST>      Define  servername  test.example.com   </IfDefine>   <IfDefine  !TEST>      Define  servername  www.example.com      Define  SSL   </IfDefine>   ! DocumentRoot  /var/www/${servername}/htdocs
  • 15. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ Other stuff: ➡ General purpose expression parser (BNF compatible) ➡ No more NameVirtualHost ➡ Loadable MPM modules
  • 16. This work is licensed under a Creative Commons Attribution 3.0 Unported License. New Modules ➡ mod_macro <Macro  VHost  $name  $domain>   <VirtualHost  *:80>          ServerName  $domain          ServerAlias  www.$domain   !        DocumentRoot  /var/www/vhosts/$name          ErrorLog  /var/log/httpd/$name.error_log          CustomLog  /var/log/httpd/$name.access_log  combined   </VirtualHost>   </Macro>   ! Use  VHost  example  example.com   Use  VHost  myhost  hostname.org   Use  VHost  apache  apache.org   ! UndefMacro  VHost From my ApacheCon 2000 Preso
  • 17. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Need More Info? ➡ Attend the next session! ➡ Rich Bowen @ 11:55am ➡ Configurable Configuration in httpd 2.4
  • 18. This work is licensed under a Creative Commons Attribution 3.0 Unported License. New Modules ➡ mod_lua (semi-experimental, but we use it!) <Files  *.lua>          SetHandler  lua-­script   </Files>   …   example.lua   require  "string"   function  handle(r)          r.content_type  =  "text/plain"   !        if  r.method  ==  'GET'  then                  r:puts("Hello  Lua  World!n")                  for  k,  v  in  pairs(  r:parseargs()  )  do                          r:puts(  string.format("%s:  %sn",  k,  v)  )                  end          elseif  r.method  ==  'POST'  then                  r:puts("Hello  Lua  World!n")                  for  k,  v  in  pairs(  r:parsebody()  )  do                          r:puts(  string.format("%s:  %sn",  k,  v)  )                  end          elseif  r.method  ==  'PUT'  then                  r:puts("Unsupported  HTTP  method  "  ..  r.method)                  r.status  =  405                  return  apache2.ok          else                return  501          end          return  apache2.OK   end
  • 19. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Need More Info? ➡ Attend the latter session! ➡ Daniel Gruno @ 5:00pm ➡ (Re)Introducing mod_lua
  • 20. This work is licensed under a Creative Commons Attribution 3.0 Unported License. New Modules ➡ mod_proxy submodules: ➡ mod_proxy_fcgi ➡ mod_proxy_scgi ➡ mod_proxy_wtunnel ➡ mod_proxy_html ➡ mod_proxy_express ProxyExpressEnable  on
 ProxyExpressDBMFile  emap   …   ##
 ##express-­map.txt:  httxt2dbm  -­i  express-­map.txt  -­o  emap
 ##
 
 www1.example.com          http://192.168.002.2:8080
 www2.example.com          http://192.168.002.12:8088
 www3.example.com          http://192.168.002.10    ...   www6341.example.com    http://192.168.211.26
  • 21. This work is licensed under a Creative Commons Attribution 3.0 Unported License. New Modules ➡ mod_buffer ➡ buffer the i/o stacks w/i httpd ➡ mod_sed ➡ True sed functionality, alternate to mod_substitute ➡ mod_remoteip ➡ allow access to the real client IP address ➡ mod_session ➡ easily maintain application server state ➡ …
  • 22. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Cloud and Performance ➡ The Cloud is a game changer for web servers ➡ Horizontal scalability is no longer as painful ➡ Concurrency is no longer the sole consideration ➡ ... or maybe even the primary one ➡ What’s important now? Transaction Time! (because it CAN be) ➡ Low latency ➡ Fast req/resp turnover ➡ Does density still matter? Of course! ➡ Are there environs where super-mega concurrency is the bugaboo? You betcha! (but the cloud makes these more and more rare, and you’re likely using a bad architecture anyway)
  • 23. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Cloud and Dynamics ➡ The Cloud is a game changer for web servers ➡ The cloud is a dynamic place ➡ automated reconfiguration ➡ horizontal, not vertical scaling ➡ self-aware environments OK, maybe not THAT self-aware
  • 24. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Why Dynamic Proxy Matters ➡ Apache httpd still the most frequently used front-end ➡ Proxy capabilities must be cloud friendly ➡ Front-end must be dynamic friendly
  • 25. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache httpd 2.4 proxy ➡ Reverse Proxy Improvements ➡ Supports FastCGI, SCGI, Websockets in balancer ➡ Additional load balancing mechanisms ➡ Runtime changing of clusters w/o restarts ➡ Support for dynamic configuration ➡ mod_proxy_express ➡ mod_fcgid and fcgistarter ➡ Brand New: Support for Unix Domain Sockets
  • 26. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Putting it all together <Proxy  balancer://foo>      BalancerMember  http://php1:8080/          loadfactor=1      BalancerMember  http://php2:8080/          loadfactor=4      BalancerMember  http://phpbkup:8080/    loadfactor=1  status=+h      BalancerMember  http://phpexp:8080/      lbset=1      ProxySet  lbmethod=bytraffic   </Proxy>   <Proxy  balancer://javaapps>      BalancerMember  ajp://tc1:8089/          loadfactor=1      BalancerMember  ajp://tc2:8089/          loadfactor=4      ProxySet  lbmethod=byrequests   </Proxy>   ProxyPass                /apps/                  balancer://foo/   ProxyPassReverse  /apps/                  balancer://foo/   ProxyPass                /serv/                  balancer://javaapps/   ProxyPass                /images/              http://images:8080/   ProxyPass                /foo                      unix:/home/www.socket|http://localhost/bar/
  • 27. This work is licensed under a Creative Commons Attribution 3.0 Unported License. HeartBeat / HeartMonitor ➡ New LB (load balance) method ➡ Uses multicast between gateway and reverse proxies ➡ Provides heartbeat (are you there?) capability ➡ Also provides basic load info ➡ This info stored in shm, and used for balancing ➡ Multicast can be an issue ➡ Use mod_header with %l, %i, %b (loadavg, idle, busy) ➡ but no LBmethod currently uses this :( ➡ We need a universal “load” measure
  • 28. This work is licensed under a Creative Commons Attribution 3.0 Unported License. balancer-manager ➡ Embedded proxy admin web interface ➡ Allows for real-time ➡ Monitoring of stats for each worker ➡ Adjustment of worker params ➡ Allows for real-time ➡ Addition of new workers/nodes ➡ Change of LB methods ➡ Can be persistent! ➡ More RESTful ➡ Can be CLI-driven
  • 29. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Need More Info? ➡ Attend the upcoming sessions! ➡ Daniel Ruggeri today @ 3:00pm ➡ mod_proxy Cookbook ➡ Jeff Trawick tomorrow @ 10:30am ➡ Using FastCGI with Apache httpd 2.4
  • 30. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Thanks Twitter: @jimjag Emails:
 jim@jaguNET.com
 jjagielski@outercurve.org
 jim@apache.org
 jimjag@redhat.com http://www.slideshare.net/jimjag/