2
So, your web server machine may not be the fastest, shiniest
machine,but it can still take a few hits
without going down.
3
4
Assumptions
• Limited Resources• Work With What You Have• You’re probably running Linux• No Compiling or Recompiling!• You can find httpd.conf
5
Purposes of Monitoring
• Observation• Extrapolation• Signals/Alerts• Testing
6
Monitoring Your Server
8
Monitoring Solaris: SE Toolkit
• Lightweight• Programmable• Alive
http://www.wundermoosen.com/default.aspx?f=2&p=setoolkit
9
Other Monitoring Tools
• vmstat• top• free
10
Web Server Logs
• ErrorLog– LogLevel: debug, info, notice, warn, error, crit
• Access Log: TransferLog or CustomLog– Common Log Format
11
Common Log Format172.16.2.91 - - [16/Nov/2003:15:23:27 -0800] "GET /~sctemme/ HTTP/1.1" 200 1446172.16.2.91 - - [16/Nov/2003:15:23:28 -0800] "GET /~sctemme/css/doc.css HTTP/1.1" 200 167172.16.2.91 - - [16/Nov/2003:15:23:28 -0800] "GET /~sctemme/css/menu.css HTTP/1.1" 200 623172.16.2.91 - - [16/Nov/2003:15:23:29 -0800] "GET /favicon.ico HTTP/1.1" 404 283172.16.2.91 - - [16/Nov/2003:15:23:34 -0800] "GET /~sctemme/index.html HTTP/1.1" 200 1446
Client IP 172.16.2.91
RFC 1413 ident -
username -
timestamp [16/Nov/2003:15:23:29 -0800]
Request "GET /favicon.ico HTTP/1.1"
Status Code 404
Content Bytes 283
12
Configuring for Performance
• Configuring Apache• Tuning the Operating System• Scaling Your Site
13
Apache Configuration
• Process/Thread Management• DNS Lookups• Avoid .htaccess Files• Disable unused modules• Tune your App Tier
14
DNS 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
16
MaxClients
• 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)
17
Sizing 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
18
Top
19
Selecting Your MPM
• Apache 2.0 only!• Processes and Threads• Differences between platforms• Thread-safety issues
20
Processes 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
21
Platforms and Threading
• Context switches expensive on Solaris, AIX• Context switches cheaper on Linux• Solaris uses M:N 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
22
Thread-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
23
Tune 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
24
System Tuning Tips
• RAM and swap space• ulimit: files and processes• Turn off unused services and modules
25
RAM 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
26
ulimit
• 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
27
Scaling Your Site
• Vertically– Tiered Model
• Horizontally– Load Balancing
28
Scaling Vertically
ClientTCP/IP
TCP/IP
TCP/IP
29
Scaling Vertically
• Move Services to Other Hosts• Pros:
– Less resource contention– Specialized hardware– Scale tiers individually
• Cons:– Development/Deployment harder– More hosts to manage
30
Scaling Horizontally
Client
31
Tips
• Observe Before You Act• Act on Monitoring Results• Don’t Overload Your System• Use A Staging Server
32
Q&A
33
Further 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 O’Reilly & Associates; ISBN 0596002033• Patrick Killelea, Web Performance Tuning, 2nd Edition, 2002
O’Reilly & 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 O’Reilly & Associates; ISBN 0596001916
34
Conference 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
35
Current Version
http://apache.org/~sctemme/Apcon2004/MO14/
36
Thank You