Title: Shoehorning Apache Onto Your Box
1Shoehorning Apache Onto Your Box
Sander Temme
2So, your web server machine may not be the
fastest, shiniest machine,but it can still take
a few hits without going down.
3(No Transcript)
4Assumptions
- Limited Resources
- Work With What You Have
- Youre probably running Linux
- No Compiling or Recompiling!
- You can find httpd.conf
5Purposes of Monitoring
- Observation
- Extrapolation
- Signals/Alerts
- Testing
6Monitoring Your Server
7Monitoring Apache
8Monitoring Solaris SE Toolkit
- Lightweight
- Programmable
- Alive
http//www.wundermoosen.com/default.aspx?f2pset
oolkit
9Other Monitoring Tools
10Web Server Logs
- ErrorLog
- LogLevel debug, info, notice, warn, error, crit
- Access Log TransferLog or CustomLog
- Common Log Format
11Common Log Format
172.16.2.91 - - 16/Nov/2003152327 -0800 "GET
/sctemme/ HTTP/1.1" 200 1446 172.16.2.91 - -
16/Nov/2003152328 -0800 "GET
/sctemme/css/doc.css HTTP/1.1" 200
167 172.16.2.91 - - 16/Nov/2003152328 -0800
"GET /sctemme/css/menu.css HTTP/1.1" 200
623 172.16.2.91 - - 16/Nov/2003152329 -0800
"GET /favicon.ico HTTP/1.1" 404 283 172.16.2.91 -
- 16/Nov/2003152334 -0800 "GET
/sctemme/index.html HTTP/1.1" 200 1446
12Configuring for Performance
- Configuring Apache
- Tuning the Operating System
- Scaling Your Site
13Apache Configuration
- Process/Thread Management
- DNS Lookups
- Avoid .htaccess Files
- Disable unused modules
- Tune your App Tier
14DNS Lookups
- HostnameLookups
- Access Control
- Bad Deny from example.com
- Good Deny from 172.160.234.5
15.htaccess Files
- Per-directory configuration files
- Accessed for every request
- Best performance AllowOverride none
GET /dir1/dir2/restricted.html HTTP/1.0
16MaxClients
- Configuration file directive
- Maximum number of workers
- Apache 1.3, 2.0 Prefork processes
- Apache 2.0 Worker threads processes
- Limit according to resources (memory)
17Sizing MaxClients
- Take total RAM
- Subtract OS allowance
- look at free value without Apache, etc.
- Subtract external program allowance
- JVM, cgi programs, MySQL?
- Divide by httpd process size
- Read process size from top
18Top
19Selecting Your MPM
- Apache 2.0 only!
- Processes and Threads
- Differences between platforms
- Thread-safety issues
20Processes and Threads
- Process
- Own copy of data structures
- Shares program code, shared memory
- Context switches expensive
- Thread
- Runs within process
- Shares process environment
- No context switch
21Platforms and Threading
- Context switches expensive on Solaris, AIX
- Context switches cheaper on Linux
- Solaris uses MN threading
- Linux uses 1 process per thread
- LinuxThreads implementation is old
- Replaced by Native Posix Thread Library (NPTL) in
2.6 - NTPL already in RH 9, RHAS 3
22Thread-safety
- Third-party modules and libraries
- mod_perl experimental threading in Perl 5.6
more mature in Perl 5.8 - PHP uses many third-party libraries
- FreeBSD threading not reliable until 5.x
- Use KSE threading in 5.x
- Still not endorsed by ASF
23Tune your App Tier
- Tomcat
- Edit server.xml, tune minProcessors,
maxProcessors - Tune JVM (Heap, Garbage Collection)
- MySQL
- Ships with various scenarios in support-files
- my-small,medium,large,huge.conf
- PHP prefork every child makes a connection
24System Tuning Tips
- RAM and swap space
- ulimit files and processes
- Turn off unused services and modules
25RAM and Swap
- Swap is disk-based Extension of RAM
- Excessive swapping kills performance
- Tune MaxClients
- Never have more memory than swap
- Upgrade RAM - add more swap space
26ulimit
- Per-process resource limits
- Built-in command of sh, bash
- Important limits
- processes (-u)
- open files (-n)
- Set in invoking shell
- Code in Apache 2.0 startup script
- ulimit -S -n ulimit -H -n
- Linux /etc/security/limits.conf
27Scaling Your Site
- Vertically
- Tiered Model
- Horizontally
- Load Balancing
28Scaling Vertically
TCP/IP
Client
TCP/IP
TCP/IP
29Scaling Vertically
- Move Services to Other Hosts
- Pros
- Less resource contention
- Specialized hardware
- Scale tiers individually
- Cons
- Development/Deployment harder
- More hosts to manage
30Scaling Horizontally
Client
31Tips
- Observe Before You Act
- Act on Monitoring Results
- Dont Overload Your System
- Use A Staging Server
32QA
33Further Reading
- Ryan B. Bloom, Apache Server 2.0 The Complete
Reference, 2002 McGraw Hill Osborne ISBN
0-07-222344-8 - Ben Laurie and Peter Laurie, Apache The
Definitive Guide (3rd Edition), 2002 OReilly
Associates ISBN 0596002033 - Patrick Killelea, Web Performance Tuning, 2nd
Edition, 2002 OReilly Associates ISBN
0-596-00172-X - http//httpd.apache.org/docs-2.0/misc/perf-tuning.
html - http//httpd.apache.org/docs/misc/perf-tuning.html
- Adrian Cockcroft, Richard Pettit and Sun
Microsystems Press, Sun Performance and Tuning
Java and the Internet (2nd Edition), 1998
Prentice Hall PTR ISBN 0130952494 - Ken Coar and Rich Bowen, Apache Cookbook, 2003
OReilly Associates ISBN 0596001916
34Conference Roadmap
- T11 Scalable Internet Architectures
- MO04 Advanced Topics in Module Design
- TU02 Apache as a Reverse Proxy
- TU05 Building Scalable Websites with Perl
- TU13 Feedster at 18 Months Old
- TU17 Migrating the BBC website to Apache
- WE08 Apache Performance
- WE19 Powering High-volume web sites with
Lenya/Cocoon and mod_cache
35Current Version
- http//apache.org/sctemme/Apcon2004/MO14/
36Thank You