SlideShare a Scribd company logo
1 of 38
Apache Performance Tuning

        Part 2: Scaling Out

  Sander Temme <sander@temme.net>
Agenda
•   Introduction
•   Redundancy in Hardware
•   Building Out: Separate Tiers
•   Building Out: Load Balancing
•   Caching Content
•   Conclusion
Introduction
• Why do This?
  – Scalability (Oh my gosh, I’m so popular!)
  – Reliability (We need five nines!)
• Why NOT do This?
  – It costs money
Redundancy in Hardware
• Moving Parts Break
  –   Hard Disks
  –   Power Supplies
  –   Hard Disks
  –   Fans
  –   Hard Disks
• Buy High Quality Disks
  – Refurbished, OEM, Brand Name
  – Which has longer warranty?
  – Which is more reliable?
Server Configuration
• Mirror those Disks
  – Install the RAID utility
  – Have it warn you
  – RAID is no good if you don’t learn of
    failures!
• Redundant Power Supplies
  – On different circuits
Scaling Vertically
Scaling Vertically
• Move Services to Other Hosts
• Pros:
  – Less resource contention
  – Specialized hardware
  – Scale out tiers individually
• Cons:
  – Development/Deployment harder
  – More hosts to manage
Scaling Horizontally
Scaling Horizontally
•   Multiple servers per tier
•   All receive requests
•   All serve same content
•   Some arbitration scheme
Load Balancing Schemes
• DNS Tricks
• Peer Server Pools
  – Network Load Balancing (Win2k3)
  – Wackamole
• Load Balancing Appliance
  – Box from F5, Juniper, Cisco, Foundry, …
  – Linux Virtual Server
DNS Round-Robin
• Easy!
• Multiple A Records in DNS Zone File
• Not Smart:
  – DNS Lookups are cached
  – Load on Server
  – Server Outage
Example Zone File
scalingout.org. 86400   IN SOA ns.scalingout.org. sctemme.scalingout.org. (
           2006051401   ; Serial
           86400        ; refresh (1 day)
           7200         ; retry (2 hours)
           8640000      ; expire (10 days)
           86400 )      ; minimum (1 day)

scalingout.org.        IN       NS      bagheera.scalingout.org.

gw                IN        A        10.11.0.1
bagheera          IN        A        10.11.0.2

; ...

mail              IN        CNAME    bagheera
ns                IN        CNAME    bagheera

www               IN        A        10.11.0.113
                  IN        A        10.11.0.114
                  IN        A        10.11.0.115
Peer-based: NLB
• Windows 2000 Server Enterprise Ed.,
  Windows Server 2003
• Up to 32 hosts in cluster
• All hosts assume cluster IP, MAC
• NLB makes LB decision
  – Only one host gets to answer TCP
    handshake
• Should be application independent
Peer-based: Wackamole
• High Availability Solution
• When Host Fails
  – Other hosts take over its IP addresses
  – Distribute IP addresses among cluster
  – Every IP address reliably available
• No Load Balancing!
  – Use with RR DNS (or something)

      http://www.backhand.org/wackamole/
Load Balancing Device




Client      Internet
Load Balancing
• One Load Balancer
• Many Web Servers
• Choice of Balancing Schemes
  – Round-robin, Least Used, …
• Reliability
  – Heartbeats, unavailable servers don’t
    receive requests
• Feature War
Linux Virtual Server
• Free, Open Source, etc.
• IP Virtual Server module in kernel
• Lots of auxiliary modules
  – Like a box of Legos
  – May come with Your Distribution
• Do It Yourself

    http://www.linuxvirtualserver.org/
Example: mod_proxy_balancer
• New in Apache HTTP Server 2.2
• Part of mod_proxy
• Two Load Balancing Methods
  – By number of requests
  – By number of bytes
• Detects failed backends
Apache Configuration
Listen 80
LogLevel debug
TransferLog logs/access_log

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

ProxyPass / balancer://mycluster/
ProxyPassReverse / http://1.2.3.4:80
ProxyPassReverse / http://1.2.3.5:80

<Proxy balancer://mycluster>
  BalancerMember http://1.2.3.4:80
  BalancerMember http://1.2.3.5:80
</Proxy>
Example: Tomcat, mod_jk
• Apache + mod_jk
• Multiple Tomcat servers
• Balancer Worker
Apache Configuration
LoadModule jk_module /Volumes/Files/asf/httpd-r415210w/modules/mod_jk.so
JKMount /servlets-examples/* loadbalancer
JKMount /*.jsp loadbalancer
JkMount /jkmanager/* jkstatus
JKLogFile logs/jk_log
JKLogLevel debug
JKWorkerProperty worker.list=loadbalancer,jkstatus
JKWorkerProperty worker.tc1.port=15109
JKWorkerProperty worker.tc1.host=localhost
JKWorkerProperty worker.tc1.type=ajp13
JKWorkerProperty worker.tc1.lbfactor=1
JKWorkerProperty worker.tc2.port=15209
JKWorkerProperty worker.tc2.host=localhost
JKWorkerProperty worker.tc2.type=ajp13
JKWorkerProperty worker.tc2.lbfactor=1
JKWorkerProperty worker.tc3.port=15309
JKWorkerProperty worker.tc3.host=localhost
JKWorkerProperty worker.tc3.type=ajp13
JKWorkerProperty worker.tc3.lbfactor=1
JKWorkerProperty worker.loadbalancer.type=lb
JKWorkerProperty worker.loadbalancer.balance_workers=tc1, tc2, tc3
JKWorkerProperty worker.jkstatus.type=status
Tomcat Configuration
   • Put same content on all Tomcats
   • Edit conf/server.xml:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tc1">


   • jvmRoute must match jk worker
     name!
Problem: Session State
• HTTP is Stateless
• Apps use Sessions
  – Cookies
  – URL Encoding
• Session created on single server
  – Broken by Load Balancing
  – PHP: sessions stored on disk
Solutions: Session State
• “Sticky” routing on Load Balancer
• Store State in DB
• Put benign State in Cookie
  – But don’t trust the client too much
• Replicate Sessions on Back-end
Tomcat Session Replication
• Share HttpSession objects across
  instances
• One instance dies, session lives on
• Apache will route requests to other
  instance
• Uses IP Multicast
Session Replication Config
• Uncomment <Cluster> element in
  server.xml
• Put empty <distributable /> element in
  <web-app> element in web.xml
Caching Content
• Dynamic Content is Expensive
• Static Content Relatively Cheap
• Several Approaches:
  – Dynamic caching
  – Pre-rendering popular pages
    (index.rss…)




                                    27
mod_cache Configuration
<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>

      CacheRoot /raid1/cacheroot
      CacheEnable disk /

      # A page modified 100 min. ago will expire in 10 min.
      CacheLastModifiedFactor .1
      # Always check again after 6 hours
      CacheMaxExpire 21600
</IfModule>

</IfModule>




                                                        28
Make Popular Pages Static
• RSS Feeds
• Popular catalog queries
• … (Check your access log)




                              29
Static Page Substitution
<Directory "/home/sctemme/inst/blog/httpd/htdocs">

    Options +Indexes

    Order allow,deny
    Allow from all

    RewriteEngine on

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /cgi-bin/blosxom.cgi/$1 [L,QSA]

</Directory>




                                                     30
Tuning the Database Tier
• Not my area (sorry)
• Give Money to Oracle Consultants
  – (or MySQL) (or …)
• Tip: Separate Read and Write
  Operations
  – Replicate from Write db to Read db
  – Read db data slightly stale
    • Does it matter?
Putting it All Together
                                Read-only




Internet




Client                         Write-only
Monitoring the Farm
• Monitor for outages
  – More boxes, more failure
  – HA can mask failures
• Monitor for performance
  – Utilization
  – Trends
Monitoring Solutions
• Nagios
  – Check services, hosts for outage
  – Highly configurable, extendable
  – Worth your time investment
• Ganglia
  – Monitor for performance
  – See Brad Nicholes’s session
Monitoring Caveats
• Takes Time, Effort
  – Highly flexible products
• You can’t fix it
  – If you don’t know it’s broken
• You can’t tune it
  – If you don’t know the bottlenecks
Conference Roadmap
• Monitoring 2.0 - Zenoss, the next level of IT
  management (Training)
• Apache Performance Tuning Part 1:
  Scaling Up
• Load-balancing with Apache HTTPD 2.2
  and later
• Scaling the download infrastructure with
  your success
• Break My Site
Current Version

http://people.apache.org/~sctemme/ApconEU2008/
Thank You

More Related Content

What's hot

Apache Tomcat 8 Application Server
Apache Tomcat 8 Application ServerApache Tomcat 8 Application Server
Apache Tomcat 8 Application Servermohamedmoharam
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationTomcat Expert
 
How to monitor and manage Apache Tomcat
How to monitor and manage Apache TomcatHow to monitor and manage Apache Tomcat
How to monitor and manage Apache TomcatEgnyte
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at NuxeoNuxeo
 
Performance all teh things
Performance all teh thingsPerformance all teh things
Performance all teh thingsMarcus Deglos
 
CRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationCRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationTomasz Rękawek
 
Tomcat configuration
Tomcat configurationTomcat configuration
Tomcat configurationDima Gomaa
 
Apache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikApache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikEdgar Espina
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New EvolutionAllan Huang
 
Introduction of Tomcat
Introduction of TomcatIntroduction of Tomcat
Introduction of TomcatDebashis Nath
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dumpejlp12
 
ProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLRené Cannaò
 

What's hot (20)

Tomcat Server
Tomcat ServerTomcat Server
Tomcat Server
 
Apache Tomcat 8 Application Server
Apache Tomcat 8 Application ServerApache Tomcat 8 Application Server
Apache Tomcat 8 Application Server
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 
Tomcat next
Tomcat nextTomcat next
Tomcat next
 
How to monitor and manage Apache Tomcat
How to monitor and manage Apache TomcatHow to monitor and manage Apache Tomcat
How to monitor and manage Apache Tomcat
 
Fastest Servlets in the West
Fastest Servlets in the WestFastest Servlets in the West
Fastest Servlets in the West
 
Apache TomEE - Tomcat with a kick
Apache TomEE  - Tomcat with a kickApache TomEE  - Tomcat with a kick
Apache TomEE - Tomcat with a kick
 
[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo[NYC Meetup] Docker at Nuxeo
[NYC Meetup] Docker at Nuxeo
 
Performance all teh things
Performance all teh thingsPerformance all teh things
Performance all teh things
 
CRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationCRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migration
 
Aem maintenance
Aem maintenanceAem maintenance
Aem maintenance
 
Auxiliary : Tomcat
Auxiliary : TomcatAuxiliary : Tomcat
Auxiliary : Tomcat
 
Tomcat configuration
Tomcat configurationTomcat configuration
Tomcat configuration
 
Apache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip HanikApache Tomcat 7 by Filip Hanik
Apache Tomcat 7 by Filip Hanik
 
Tomcat New Evolution
Tomcat New EvolutionTomcat New Evolution
Tomcat New Evolution
 
Introduction of Tomcat
Introduction of TomcatIntroduction of Tomcat
Introduction of Tomcat
 
Java troubleshooting thread dump
Java troubleshooting thread dumpJava troubleshooting thread dump
Java troubleshooting thread dump
 
ProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQLProxySQL - High Performance and HA Proxy for MySQL
ProxySQL - High Performance and HA Proxy for MySQL
 
What's New in WildFly 9?
What's New in WildFly 9?What's New in WildFly 9?
What's New in WildFly 9?
 
are available here
are available hereare available here
are available here
 

Similar to Apache Performance Tuning: Scaling Out

Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptxsanjanabal
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Performance out
Performance outPerformance out
Performance outJack Huang
 
Pascal benois performance_troubleshooting-spsbe18
Pascal benois performance_troubleshooting-spsbe18Pascal benois performance_troubleshooting-spsbe18
Pascal benois performance_troubleshooting-spsbe18BIWUG
 
Best And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsBest And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsLetsConnect
 
VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...
VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...
VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...VMworld
 
VMworld 2014: Advanced SQL Server on vSphere Techniques and Best Practices
VMworld 2014: Advanced SQL Server on vSphere Techniques and Best PracticesVMworld 2014: Advanced SQL Server on vSphere Techniques and Best Practices
VMworld 2014: Advanced SQL Server on vSphere Techniques and Best PracticesVMworld
 
(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool Management(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool ManagementBIOVIA
 

Similar to Apache Performance Tuning: Scaling Out (20)

Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptx
 
2 7
2 72 7
2 7
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
title
titletitle
title
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Performance out
Performance outPerformance out
Performance out
 
Drupal performance
Drupal performanceDrupal performance
Drupal performance
 
Pascal benois performance_troubleshooting-spsbe18
Pascal benois performance_troubleshooting-spsbe18Pascal benois performance_troubleshooting-spsbe18
Pascal benois performance_troubleshooting-spsbe18
 
Best And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM ConnectionsBest And Worst Practices Deploying IBM Connections
Best And Worst Practices Deploying IBM Connections
 
VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...
VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...
VMworld Europe 2014: Advanced SQL Server on vSphere Techniques and Best Pract...
 
VMworld 2014: Advanced SQL Server on vSphere Techniques and Best Practices
VMworld 2014: Advanced SQL Server on vSphere Techniques and Best PracticesVMworld 2014: Advanced SQL Server on vSphere Techniques and Best Practices
VMworld 2014: Advanced SQL Server on vSphere Techniques and Best Practices
 
(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool Management(ATS4-PLAT08) Server Pool Management
(ATS4-PLAT08) Server Pool Management
 

Recently uploaded

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Apache Performance Tuning: Scaling Out

  • 1. Apache Performance Tuning Part 2: Scaling Out Sander Temme <sander@temme.net>
  • 2. Agenda • Introduction • Redundancy in Hardware • Building Out: Separate Tiers • Building Out: Load Balancing • Caching Content • Conclusion
  • 3. Introduction • Why do This? – Scalability (Oh my gosh, I’m so popular!) – Reliability (We need five nines!) • Why NOT do This? – It costs money
  • 4. Redundancy in Hardware • Moving Parts Break – Hard Disks – Power Supplies – Hard Disks – Fans – Hard Disks • Buy High Quality Disks – Refurbished, OEM, Brand Name – Which has longer warranty? – Which is more reliable?
  • 5. Server Configuration • Mirror those Disks – Install the RAID utility – Have it warn you – RAID is no good if you don’t learn of failures! • Redundant Power Supplies – On different circuits
  • 7. Scaling Vertically • Move Services to Other Hosts • Pros: – Less resource contention – Specialized hardware – Scale out tiers individually • Cons: – Development/Deployment harder – More hosts to manage
  • 9. Scaling Horizontally • Multiple servers per tier • All receive requests • All serve same content • Some arbitration scheme
  • 10. Load Balancing Schemes • DNS Tricks • Peer Server Pools – Network Load Balancing (Win2k3) – Wackamole • Load Balancing Appliance – Box from F5, Juniper, Cisco, Foundry, … – Linux Virtual Server
  • 11. DNS Round-Robin • Easy! • Multiple A Records in DNS Zone File • Not Smart: – DNS Lookups are cached – Load on Server – Server Outage
  • 12. Example Zone File scalingout.org. 86400 IN SOA ns.scalingout.org. sctemme.scalingout.org. ( 2006051401 ; Serial 86400 ; refresh (1 day) 7200 ; retry (2 hours) 8640000 ; expire (10 days) 86400 ) ; minimum (1 day) scalingout.org. IN NS bagheera.scalingout.org. gw IN A 10.11.0.1 bagheera IN A 10.11.0.2 ; ... mail IN CNAME bagheera ns IN CNAME bagheera www IN A 10.11.0.113 IN A 10.11.0.114 IN A 10.11.0.115
  • 13. Peer-based: NLB • Windows 2000 Server Enterprise Ed., Windows Server 2003 • Up to 32 hosts in cluster • All hosts assume cluster IP, MAC • NLB makes LB decision – Only one host gets to answer TCP handshake • Should be application independent
  • 14. Peer-based: Wackamole • High Availability Solution • When Host Fails – Other hosts take over its IP addresses – Distribute IP addresses among cluster – Every IP address reliably available • No Load Balancing! – Use with RR DNS (or something) http://www.backhand.org/wackamole/
  • 16. Load Balancing • One Load Balancer • Many Web Servers • Choice of Balancing Schemes – Round-robin, Least Used, … • Reliability – Heartbeats, unavailable servers don’t receive requests • Feature War
  • 17. Linux Virtual Server • Free, Open Source, etc. • IP Virtual Server module in kernel • Lots of auxiliary modules – Like a box of Legos – May come with Your Distribution • Do It Yourself http://www.linuxvirtualserver.org/
  • 18. Example: mod_proxy_balancer • New in Apache HTTP Server 2.2 • Part of mod_proxy • Two Load Balancing Methods – By number of requests – By number of bytes • Detects failed backends
  • 19. Apache Configuration Listen 80 LogLevel debug TransferLog logs/access_log LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so ProxyPass / balancer://mycluster/ ProxyPassReverse / http://1.2.3.4:80 ProxyPassReverse / http://1.2.3.5:80 <Proxy balancer://mycluster> BalancerMember http://1.2.3.4:80 BalancerMember http://1.2.3.5:80 </Proxy>
  • 20. Example: Tomcat, mod_jk • Apache + mod_jk • Multiple Tomcat servers • Balancer Worker
  • 21. Apache Configuration LoadModule jk_module /Volumes/Files/asf/httpd-r415210w/modules/mod_jk.so JKMount /servlets-examples/* loadbalancer JKMount /*.jsp loadbalancer JkMount /jkmanager/* jkstatus JKLogFile logs/jk_log JKLogLevel debug JKWorkerProperty worker.list=loadbalancer,jkstatus JKWorkerProperty worker.tc1.port=15109 JKWorkerProperty worker.tc1.host=localhost JKWorkerProperty worker.tc1.type=ajp13 JKWorkerProperty worker.tc1.lbfactor=1 JKWorkerProperty worker.tc2.port=15209 JKWorkerProperty worker.tc2.host=localhost JKWorkerProperty worker.tc2.type=ajp13 JKWorkerProperty worker.tc2.lbfactor=1 JKWorkerProperty worker.tc3.port=15309 JKWorkerProperty worker.tc3.host=localhost JKWorkerProperty worker.tc3.type=ajp13 JKWorkerProperty worker.tc3.lbfactor=1 JKWorkerProperty worker.loadbalancer.type=lb JKWorkerProperty worker.loadbalancer.balance_workers=tc1, tc2, tc3 JKWorkerProperty worker.jkstatus.type=status
  • 22. Tomcat Configuration • Put same content on all Tomcats • Edit conf/server.xml: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tc1"> • jvmRoute must match jk worker name!
  • 23. Problem: Session State • HTTP is Stateless • Apps use Sessions – Cookies – URL Encoding • Session created on single server – Broken by Load Balancing – PHP: sessions stored on disk
  • 24. Solutions: Session State • “Sticky” routing on Load Balancer • Store State in DB • Put benign State in Cookie – But don’t trust the client too much • Replicate Sessions on Back-end
  • 25. Tomcat Session Replication • Share HttpSession objects across instances • One instance dies, session lives on • Apache will route requests to other instance • Uses IP Multicast
  • 26. Session Replication Config • Uncomment <Cluster> element in server.xml • Put empty <distributable /> element in <web-app> element in web.xml
  • 27. Caching Content • Dynamic Content is Expensive • Static Content Relatively Cheap • Several Approaches: – Dynamic caching – Pre-rendering popular pages (index.rss…) 27
  • 28. mod_cache Configuration <IfModule mod_cache.c> <IfModule mod_disk_cache.c> CacheRoot /raid1/cacheroot CacheEnable disk / # A page modified 100 min. ago will expire in 10 min. CacheLastModifiedFactor .1 # Always check again after 6 hours CacheMaxExpire 21600 </IfModule> </IfModule> 28
  • 29. Make Popular Pages Static • RSS Feeds • Popular catalog queries • … (Check your access log) 29
  • 30. Static Page Substitution <Directory "/home/sctemme/inst/blog/httpd/htdocs"> Options +Indexes Order allow,deny Allow from all RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /cgi-bin/blosxom.cgi/$1 [L,QSA] </Directory> 30
  • 31. Tuning the Database Tier • Not my area (sorry) • Give Money to Oracle Consultants – (or MySQL) (or …) • Tip: Separate Read and Write Operations – Replicate from Write db to Read db – Read db data slightly stale • Does it matter?
  • 32. Putting it All Together Read-only Internet Client Write-only
  • 33. Monitoring the Farm • Monitor for outages – More boxes, more failure – HA can mask failures • Monitor for performance – Utilization – Trends
  • 34. Monitoring Solutions • Nagios – Check services, hosts for outage – Highly configurable, extendable – Worth your time investment • Ganglia – Monitor for performance – See Brad Nicholes’s session
  • 35. Monitoring Caveats • Takes Time, Effort – Highly flexible products • You can’t fix it – If you don’t know it’s broken • You can’t tune it – If you don’t know the bottlenecks
  • 36. Conference Roadmap • Monitoring 2.0 - Zenoss, the next level of IT management (Training) • Apache Performance Tuning Part 1: Scaling Up • Load-balancing with Apache HTTPD 2.2 and later • Scaling the download infrastructure with your success • Break My Site