Presentation is loading. Please wait.

Presentation is loading. Please wait.

Shoehorning Apache Onto Your Box

Similar presentations


Presentation on theme: "Shoehorning Apache Onto Your Box"— Presentation transcript:

1 Shoehorning Apache Onto Your Box
System Sizing tips Sander Temme

2 Agenda The Problem Monitoring Your Server How Many Processes?
Selecting Your MPM Spinning Locks Tuning Tips Further Reading

3 The Problem Limited Resources Work with what you have
How to get the most out of existing infrastructure

4 Monitoring Your Server
top free vmstat Web server logs SE Toolkit mod_status Generating Load

5 Top

6 free and vmstat [sctemme@eartha sctemme]$ free
total used free shared buffers cached Mem: -/+ buffers/cache: Swap: 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

7 Web Server Logs ErrorLog
LogLevel: debug, info, notice, warn, error, crit Access Log: TransferLog or CustomLog Common Log Format

8 Common Log Format Client IP 172.16.2.91 RFC 1413 ident - username
[16/Nov/2003:15:23: ] "GET /~sctemme/ HTTP/1.1" [16/Nov/2003:15:23: ] "GET /~sctemme/css/doc.css HTTP/1.1" [16/Nov/2003:15:23: ] "GET /~sctemme/css/menu.css HTTP/1.1" [16/Nov/2003:15:23: ] "GET /favicon.ico HTTP/1.1" [16/Nov/2003:15:23: ] "GET /~sctemme/index.html HTTP/1.1" Client IP RFC 1413 ident - username timestamp [16/Nov/2003:15:23: ] Request "GET /favicon.ico HTTP/1.1" Status Code 404 Content Bytes 283

9 SE Toolkit Solaris-specific Freely available monitoring toolkit
Scriptable with own language

10 zoom.se

11 zoom.se: trouble

12 mod_status Apache module Outputs internal status of web server
Part of standard installation Not turned on by default

13 Generating Load For testing and sizing purposes
Not necessarily realistic Several free programs available ab http_load Flood JMeter OpenSTA Commercial offerings Load Runner

14 How Many Processes? MaxClients Spinning Threads Sizing MaxClients

15 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)

16 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

17 Top

18 Selecting Your MPM Apache 2.0 only! Processes and Threads
Differences between platforms Thread-safety issues

19 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

20 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

21 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

22 Spinning Locks Accept mutex locking Why Apache locks When it doesn’t
How to manipulate

23 Accept Mutex Locking Multiple Listener Configuration (default)
Lock mutex Loop: poll listeners Got conn? Accept connection Unlock mutex Handle connection Multiple Listener Configuration (default)

24 Accept Mutex Locking Single Listener Configuration Lock mutex Accept
connection Unlock mutex Handle connection Single Listener Configuration

25 Accept Mutex Locking Single Listener Unserialized Accept (SLUA) Accept
connection Handle connection Single Listener Unserialized Accept (SLUA)

26 Tuning Tips RAM and swap space ulimit: files and processes
Turn off unused services and modules Spread the load around

27 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

28 Spread the Load Move to tiered model Off-load services to other boxes
Images SSL Database Application server Development/Deployment schism

29 Tiered Model Database Tomcat Net Apache

30 Further Reading Ryan B. Bloom, Apache Server 2.0: The Complete Reference, 2002 McGraw Hill Osborne; ISBN Patrick Killelea, Web Performance Tuning, 2nd Edition, 2002 O’Reilly & Associates; ISBN X Adrian Cockcroft, Richard Pettit and Sun Microsystems Press, Sun Performance and Tuning: Java and the Internet (2nd Edition), 1998 Prentice Hall PTR; ISBN

31 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

32 Current Version


Download ppt "Shoehorning Apache Onto Your Box"

Similar presentations


Ads by Google