Download presentation
Presentation is loading. Please wait.
Published byAmice Byrd Modified over 9 years ago
1
Shoehorning Apache Onto Your Box System Sizing tips Sander Temme
2
Agenda u The Problem u Monitoring Your Server u How Many Processes? u Selecting Your MPM u Spinning Locks u Tuning Tips u Further Reading
3
The Problem u Limited Resources u Work with what you have u How to get the most out of existing infrastructure
4
Monitoring Your Server u top u free u vmstat u Web server logs u SE Toolkit u mod_status u Generating Load
5
Top
6
free and vmstat [sctemme@eartha sctemme]$ free total used free shared buffers cached Mem: 635080 601288 33792 0 110824 301084 -/+ buffers/cache: 189380 445700 Swap: 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 92 11 0 1 76 29672 110876 301092 0 0 0 32 118 1717 52 48 0 16 0 1 76 24564 110876 301092 0 0 0 0 119 2529 51 49 0 28 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
7
Web Server Logs u ErrorLog –LogLevel: debug, info, notice, warn, error, crit u Access Log: TransferLog or CustomLog –Common Log Format
8
Common Log Format 172.16.2.91 - - [16/Nov/2003:15:23:27 -0800] "GET /~sctemme/ HTTP/1.1" 200 1446 172.16.2.91 - - [16/Nov/2003:15:23:28 -0800] "GET /~sctemme/css/doc.css HTTP/1.1" 200 167 172.16.2.91 - - [16/Nov/2003:15:23:28 -0800] "GET /~sctemme/css/menu.css HTTP/1.1" 200 623 172.16.2.91 - - [16/Nov/2003:15:23:29 -0800] "GET /favicon.ico HTTP/1.1" 404 283 172.16.2.91 - - [16/Nov/2003:15:23:34 -0800] "GET /~sctemme/index.html HTTP/1.1" 200 1446 Client IP172.16.2.91 RFC 1413 ident- username- timestamp[16/Nov/2003:15:23:29 -0800] Request"GET /favicon.ico HTTP/1.1" Status Code404 Content Bytes283
9
SE Toolkit u Solaris-specific u Freely available monitoring toolkit http://www.setoolkit.com/ u Scriptable with own language
10
zoom.se
11
zoom.se: trouble
12
mod_status u Apache module u Outputs internal status of web server u Part of standard installation u Not turned on by default
13
Generating Load u For testing and sizing purposes u Not necessarily realistic u Several free programs available –ab –http_load –Flood –JMeter –OpenSTA u Commercial offerings –Load Runner
14
How Many Processes? u MaxClients u Spinning Threads u Sizing MaxClients
15
MaxClients u Configuration file directive u Maximum number of workers u Apache 1.3, 2.0 Prefork: processes u Apache 2.0 Worker: threads * processes u Limit according to resources (memory)
16
Sizing MaxClients u Take total RAM u Subtract OS allowance –look at free value without Apache u Subtract external program allowance –JVM, cgi programs, MySQL? u Divide by httpd process size –Read process size from top
17
Top
18
Selecting Your MPM u Apache 2.0 only! u Processes and Threads u Differences between platforms u Thread-safety issues
19
Processes and Threads u Process: –Own copy of data structures –Shares: program code, shared memory –Context Switches Expensive u Thread: –Runs within process –Shares process environment –No context switch
20
Platforms and Threading u Context switches expensive on Solaris, AIX u Context switches cheaper on Linux u Solaris uses M:N threading u Linux uses 1 process per thread u LinuxThreads implementation is old –Replaced by NPTL in 2.6 –NTPL already in RH 9, RHAS 3
21
Thread-safety u 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 u FreeBSD: threading not reliable until 5.x –Use KSE threading in 5.x –Still not endorsed by ASF
22
Spinning Locks u Accept mutex locking u Why Apache locks u When it doesn’t u How to manipulate
23
Accept Mutex Locking Lock mutex Loop: poll listeners Got conn? Accept connection Unlock mutex Handle connection Multiple Listener Configuration (default)
24
Accept Mutex Locking Lock mutex Accept connection Unlock mutex Handle connection Single Listener Configuration
25
Accept Mutex Locking Accept connection Handle connection Single Listener Unserialized Accept (SLUA)
26
Tuning Tips u RAM and swap space u ulimit: files and processes u Turn off unused services and modules u Spread the load around
27
ulimit u Per-process resource limits u Built-in command of sh, bash u Important limits: – processes (-u) –open files (-n) u Set in invoking shell u Add to Apache startup script –ulimit -S -n `ulimit -H -n` u Linux: /etc/security/limits.conf
28
Spread the Load u Move to tiered model u Off-load services to other boxes –Images –SSL –Database –Application server u Development/Deployment schism
29
Tiered Model Apache Tomcat Database Net
30
Further Reading u Ryan B. Bloom, Apache Server 2.0: The Complete Reference, 2002 McGraw Hill Osborne; ISBN 0-07-222344- 8 u Patrick Killelea, Web Performance Tuning, 2nd Edition, 2002 O’Reilly & Associates; ISBN 0-596-00172-X u http://httpd.apache.org/docs-2.0/misc/perf-tuning.html u http://httpd.apache.org/docs/misc/perf-tuning.html u Adrian Cockcroft, Richard Pettit and Sun Microsystems Press, Sun Performance and Tuning: Java and the Internet (2nd Edition), 1998 Prentice Hall PTR; ISBN 0130952494
31
Session Roadmap u TU02 – Advanced Topics in Module Design: Threadsafety and Portability u TU05 – Apache Performance u TU18 – Scalable Apache for Beginners u WE04 – Parallel Development and Hosting using Apache, Tomcat and MySQL
32
Current Version http://apache.org/~sctemme/Apcon2003/MO12/
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.