SlideShare a Scribd company logo
1 of 31
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.
Hold on a tic
➡ How do you define “new”??
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, etc...
➡ Leverage higher-performant versions of APR
➡ Increase performance
➡ Reduce memory utilization
➡ The Cloud
Currently at version 2.4.12 (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.
Benchmark Conclusions
➡ Events, polling and fork/spawn creates overhead: good for
“more bang for buck” system, bad for performance for that
request
➡ For concurrency, Event & Worker on par with nginx*
➡ For transaction speed, prefork shines
➡ Let’s work on leaner MPM (more streamlined)
➡ *Main Caveats:
➡ Apache is never resource starved
➡ If memory is a scarce resource, nginx still better (for now ;) )
➡ More work can (and should) be 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  notice  
LogLevel  info  ssl:warn  
<Directory  "/usr/local/apache/htdocs/foo">  
        LogLevel  debug  
</Directory>
RequestReadTimout  notice=10  body=30
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ <If> supports per-request conditions
➡ General purpose expression parser (BNF compatible)
#  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>  
<If  “%{QUERY_STRING}  =~  /dohtml/“>  
ForceType  text/html  
</If>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuration - Runtime
➡ 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.
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:
➡ No more NameVirtualHost
➡ AllowOverrideList





➡ Loadable MPM modules
➡ Recall that different MPMs have different config directives!
AllowOverride  None  
AllowOverrideList  Redirect  RedirectMatch  Header    
./configure  —enable-­mpms-­shared=all  
LoadModule  mpm_event_module  modules/mod_mpm_event.so    
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.
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.
New Proxy (sub)Modules
➡ mod_proxy submodules:
➡ mod_proxy_fcgi
➡ mod_proxy_scgi
➡ mod_proxy_wstunnel
➡ 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
<Directory  "/var/www/docs/status">    
        AddOutputFilter  Sed  html    
        OutputSed  "s/complete/DONE/g"    
        OutputSed  “s/in-­progress/TODO/g"    
</Directory>
RemoteIPHeader  X-­Client-­IP
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_session
➡ easily maintain application server state
➡ mod_auth_form
➡ Form-based auth can now be handled internally
<Location  /dologin.html>  
        SetHandler  form-­login-­handler  
        AuthFormLoginRequiredLocation  http://example.com/login.html  
        AuthFormLoginSuccessLocation  http://example.com/success.html  
        AuthFormProvider  file  
        AuthUserFile  conf/passwd  
        AuthType  form  
        AuthName  realm  
        Session  On  
        SessionCookieName  session  path=/  
        SessionCryptoPassphrase  secret  
</Location>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
New Modules
➡ mod_log_debug
➡ Add debug logging at any hook







➡ mod_ratelimit
➡ (basic) bandwidth limiting for clients
<Location  /foo>  
    LogMessage  “subreq  to  foo”  hook=type_checker  expr=%{IS_SUBREQ}  
</Location>
<Location  /downloads>  
        SetOutputFilter  RATE_LIMIT  
        SetEnv  rate-­limit  400    
</Location>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Even more!
➡ mod_cache
➡ Can serve stale data if required
➡ X-­Cache-­Header now supports HIT/MISS/
REVALIDATE
➡ Can cache HEAD
➡ htcacheclean improvements
➡ mod_socache / mod_slotmem
➡ Data object/blog storage mechanisms
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.
What’s next?
➡ Support for HTTP/2 (mod_h2)
➡ Support for ALPN (TLS)
➡ Better async support
➡ More MPMs
➡ motorz:
➡ Streamlined event driven MPM
➡ Prelim benchmarks: 50% faster, 33% the size
➡ You tell us!
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

Lights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFeverLights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFeverbridgetkromhout
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principlesPerl Careers
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterZendCon
 
Ansible : what's ansible & use case by REX
Ansible :  what's ansible & use case by REXAnsible :  what's ansible & use case by REX
Ansible : what's ansible & use case by REXSaewoong Lee
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Thijs Feryn
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparisonHiroshi Nakamura
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with ExamplesGabriele Lana
 
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.PyCon AU 2010 - Getting Started With Apache/mod_wsgi.
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.Graham Dumpleton
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server Masahiro Nagano
 
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webAnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webclkao
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
 
How to Develop Puppet Modules: From Source to the Forge With Zero Clicks
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksHow to Develop Puppet Modules: From Source to the Forge With Zero Clicks
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksCarlos Sanchez
 
vert.x 소개 및 개발 실습
vert.x 소개 및 개발 실습vert.x 소개 및 개발 실습
vert.x 소개 및 개발 실습John Kim
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on DockerDaniel Ku
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in rubyHiroshi Nakamura
 
Building a real life application in node js
Building a real life application in node jsBuilding a real life application in node js
Building a real life application in node jsfakedarren
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Thijs Feryn
 

What's hot (20)

Lights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFeverLights, Camera, Docker: Streaming Video at DramaFever
Lights, Camera, Docker: Streaming Video at DramaFever
 
PSGI and Plack from first principles
PSGI and Plack from first principlesPSGI and Plack from first principles
PSGI and Plack from first principles
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
 
Ansible : what's ansible & use case by REX
Ansible :  what's ansible & use case by REXAnsible :  what's ansible & use case by REX
Ansible : what's ansible & use case by REX
 
FreeBSD: Dev to Prod
FreeBSD: Dev to ProdFreeBSD: Dev to Prod
FreeBSD: Dev to Prod
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparison
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
 
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.PyCon AU 2010 - Getting Started With Apache/mod_wsgi.
PyCon AU 2010 - Getting Started With Apache/mod_wsgi.
 
How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server How to build a High Performance PSGI/Plack Server
How to build a High Performance PSGI/Plack Server
 
AnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time webAnyMQ, Hippie, and the real-time web
AnyMQ, Hippie, and the real-time web
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
How to Develop Puppet Modules: From Source to the Forge With Zero Clicks
How to Develop Puppet Modules: From Source to the Forge With Zero ClicksHow to Develop Puppet Modules: From Source to the Forge With Zero Clicks
How to Develop Puppet Modules: From Source to the Forge With Zero Clicks
 
vert.x 소개 및 개발 실습
vert.x 소개 및 개발 실습vert.x 소개 및 개발 실습
vert.x 소개 및 개발 실습
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in ruby
 
Building a real life application in node js
Building a real life application in node jsBuilding a real life application in node js
Building a real life application in node js
 
Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018Developing cacheable PHP applications - Confoo 2018
Developing cacheable PHP applications - Confoo 2018
 
Introduction to Flask Micro Framework
Introduction to Flask Micro FrameworkIntroduction to Flask Micro Framework
Introduction to Flask Micro Framework
 

Viewers also liked

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
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4Jim Jagielski
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source LicensesJim 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
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and CommunitiesJim 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
 
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
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source ManagementJim 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 Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic NumberJim Jagielski
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The FeatherJim 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)

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
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source Licenses
 
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
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and Communities
 
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
 
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
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source Management
 
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 Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic Number
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The Feather
 
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 What's New in Apache httpd v2.4: Performance Increases and More

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 - GWO2016
Apache HTTPD 2.4 - GWO2016Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016Jim 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
 
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
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web serverJim Jagielski
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindSam Keen
 
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
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Dana Luther
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Ben Hall
 
Deploying configurable frontend web application containers
Deploying configurable frontend web application containersDeploying configurable frontend web application containers
Deploying configurable frontend web application containersJosé Moreira
 
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
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaDana Luther
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with NginxBud Siddhisena
 

Similar to What's New in Apache httpd v2.4: Performance Increases and More (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 - GWO2016
Apache HTTPD 2.4 - GWO2016Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016
 
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
 
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
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web server
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
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
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
 
Deploying configurable frontend web application containers
Deploying configurable frontend web application containersDeploying configurable frontend web application containers
Deploying configurable frontend web application containers
 
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
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
 
Reverse proxy magic
Reverse proxy magicReverse proxy magic
Reverse proxy magic
 
Download It
Download ItDownload It
Download It
 
Nginx + PHP
Nginx + PHPNginx + PHP
Nginx + PHP
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with Nginx
 

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
 
Apache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatApache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatJim 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
 

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
 
Apache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatApache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and Tomcat
 
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
 

Recently uploaded

How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)Damian Radcliffe
 
Call Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our EscortsCall Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our Escortsindian call girls near you
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663Call Girls Mumbai
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Deliverybabeytanya
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Roomdivyansh0kumar0
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebJames Anderson
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 

Recently uploaded (20)

How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)
 
Call Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our EscortsCall Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our Escorts
Call Girls in East Of Kailash 9711199171 Delhi Enjoy Call Girls With Our Escorts
 
Vip Call Girls Aerocity ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Aerocity ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Aerocity ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Aerocity ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
 
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
✂️ 👅 Independent Andheri Escorts With Room Vashi Call Girls 💃 9004004663
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
 
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark WebGDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
GDG Cloud Southlake 32: Kyle Hettinger: Demystifying the Dark Web
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 

What's New in Apache httpd v2.4: Performance Increases and More

  • 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. Hold on a tic ➡ How do you define “new”??
  • 4. 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!
  • 5. 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, etc... ➡ Leverage higher-performant versions of APR ➡ Increase performance ➡ Reduce memory utilization ➡ The Cloud Currently at version 2.4.12 (2.4.1 went GA Feb 21, 2012)
  • 6. 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
  • 7. 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)
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Benchmark Conclusions ➡ Events, polling and fork/spawn creates overhead: good for “more bang for buck” system, bad for performance for that request ➡ For concurrency, Event & Worker on par with nginx* ➡ For transaction speed, prefork shines ➡ Let’s work on leaner MPM (more streamlined) ➡ *Main Caveats: ➡ Apache is never resource starved ➡ If memory is a scarce resource, nginx still better (for now ;) ) ➡ More work can (and should) be done
  • 13. 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  notice   LogLevel  info  ssl:warn   <Directory  "/usr/local/apache/htdocs/foo">          LogLevel  debug   </Directory> RequestReadTimout  notice=10  body=30
  • 14. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ <If> supports per-request conditions ➡ General purpose expression parser (BNF compatible) #  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>   <If  “%{QUERY_STRING}  =~  /dohtml/“>   ForceType  text/html   </If>
  • 15. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ 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
  • 16. 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
  • 17. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuration - Runtime ➡ Other stuff: ➡ No more NameVirtualHost ➡ AllowOverrideList
 
 
 ➡ Loadable MPM modules ➡ Recall that different MPMs have different config directives! AllowOverride  None   AllowOverrideList  Redirect  RedirectMatch  Header     ./configure  —enable-­mpms-­shared=all   LoadModule  mpm_event_module  modules/mod_mpm_event.so    
  • 18. 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>
  • 19. 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
  • 20. This work is licensed under a Creative Commons Attribution 3.0 Unported License. New Proxy (sub)Modules ➡ mod_proxy submodules: ➡ mod_proxy_fcgi ➡ mod_proxy_scgi ➡ mod_proxy_wstunnel ➡ 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 <Directory  "/var/www/docs/status">            AddOutputFilter  Sed  html            OutputSed  "s/complete/DONE/g"            OutputSed  “s/in-­progress/TODO/g"     </Directory> RemoteIPHeader  X-­Client-­IP
  • 22. This work is licensed under a Creative Commons Attribution 3.0 Unported License. New Modules ➡ mod_session ➡ easily maintain application server state ➡ mod_auth_form ➡ Form-based auth can now be handled internally <Location  /dologin.html>          SetHandler  form-­login-­handler          AuthFormLoginRequiredLocation  http://example.com/login.html          AuthFormLoginSuccessLocation  http://example.com/success.html          AuthFormProvider  file          AuthUserFile  conf/passwd          AuthType  form          AuthName  realm          Session  On          SessionCookieName  session  path=/          SessionCryptoPassphrase  secret   </Location>
  • 23. This work is licensed under a Creative Commons Attribution 3.0 Unported License. New Modules ➡ mod_log_debug ➡ Add debug logging at any hook
 
 
 
 ➡ mod_ratelimit ➡ (basic) bandwidth limiting for clients <Location  /foo>      LogMessage  “subreq  to  foo”  hook=type_checker  expr=%{IS_SUBREQ}   </Location> <Location  /downloads>          SetOutputFilter  RATE_LIMIT          SetEnv  rate-­limit  400     </Location>
  • 24. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Even more! ➡ mod_cache ➡ Can serve stale data if required ➡ X-­Cache-­Header now supports HIT/MISS/ REVALIDATE ➡ Can cache HEAD ➡ htcacheclean improvements ➡ mod_socache / mod_slotmem ➡ Data object/blog storage mechanisms
  • 25. 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
  • 26. 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
  • 27. 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/
  • 28. 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
  • 29. 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
  • 30. This work is licensed under a Creative Commons Attribution 3.0 Unported License. What’s next? ➡ Support for HTTP/2 (mod_h2) ➡ Support for ALPN (TLS) ➡ Better async support ➡ More MPMs ➡ motorz: ➡ Streamlined event driven MPM ➡ Prelim benchmarks: 50% faster, 33% the size ➡ You tell us!
  • 31. 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/