Shoehorning Apache Onto Your Box System Sizing tips Sander Temme.
-
Upload
amice-byrd -
Category
Documents
-
view
219 -
download
0
Transcript of Shoehorning Apache Onto Your Box System Sizing tips Sander Temme.
Agenda
The Problem
Monitoring Your Server
How Many Processes?
Selecting Your MPM
Spinning Locks
Tuning Tips
Further Reading
The Problem
Limited Resources
Work with what you have
How to get the most out of existing infrastructure
free and vmstat
[sctemme@eartha sctemme]$ free total used free shared buffers cachedMem: 635080 601288 33792 0 110824 301084-/+ buffers/cache: 189380 445700Swap: 1315400 76 1315324
[sctemme@eartha sctemme]$ vmstat 3 5 procs memory swap io system cpu r b w swpd free buff cache si so bi bo in cs us sy id 1 0 0 76 32704 110876 301092 0 0 14 17 117 254 4 3 9211 0 1 76 29672 110876 301092 0 0 0 32 118 1717 52 48 016 0 1 76 24564 110876 301092 0 0 0 0 119 2529 51 49 028 0 0 76 19740 110876 301092 0 0 0 8 119 4194 58 42 0 0 0 0 76 25188 110880 301092 0 0 0 8 182 5707 56 39 5
Web Server Logs
ErrorLog– LogLevel: debug, info, notice, warn,
error, crit
Access Log: TransferLog or CustomLog– Common Log Format
Common Log Format
172.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
SE Toolkit
Solaris-specific
Freely available monitoring toolkit
http://www.setoolkit.com/
Scriptable with own language
mod_status
Apache module
Outputs internal status of web server
Part of standard installation
Not turned on by default
Generating Load
For testing and sizing purposes Not necessarily realistic Several free programs available
– ab– http_load– Flood– JMeter– OpenSTA
Commercial offerings– Load Runner
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)
Sizing MaxClients
Take total RAM
Subtract OS allowance– look at free value without Apache
Subtract external program allowance– JVM, cgi programs, MySQL?
Divide by httpd process size– Read process size from top
Selecting Your MPM
Apache 2.0 only!
Processes and Threads
Differences between platforms
Thread-safety issues
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
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 NPTL in 2.6– NTPL already in RH 9, RHAS 3
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
Accept Mutex Locking
Lock mutex
Loop: polllisteners
Got conn?Accept
connection
Unlockmutex
Handleconnection
Multiple Listener Configuration (default)
Accept Mutex Locking
Lock mutex
Acceptconnection
Unlockmutex
Handleconnection
Single Listener Configuration
Tuning Tips
RAM and swap space
ulimit: files and processes
Turn off unused services and modules
Spread the load around
ulimit
Per-process resource limits
Built-in command of sh, bash
Important limits:– processes (-u)– open files (-n)
Set in invoking shell
Add to Apache startup script– ulimit -S -n `ulimit -H -n`
Linux: /etc/security/limits.conf
Spread the Load
Move to tiered model
Off-load services to other boxes– Images– SSL– Database– Application server
Development/Deployment schism
Further Reading
Ryan B. Bloom, Apache Server 2.0: The Complete Reference, 2002 McGraw Hill Osborne; ISBN 0-07-222344-8
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
Session Roadmap
TU02 – Advanced Topics in Module Design: Threadsafety and Portability
TU05 – Apache Performance
TU18 – Scalable Apache for Beginners
WE04 – Parallel Development and Hosting using Apache, Tomcat and MySQL