shoehorning apache onto your box

32
Shoehorning Apache Onto Your Box System Sizing tips Sander Temme <[email protected]>

Upload: rehan

Post on 08-Jan-2016

23 views

Category:

Documents


5 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Shoehorning Apache Onto Your Box

Shoehorning Apache Onto Your Box

System Sizing tips

Sander Temme <[email protected]>

Page 2: Shoehorning Apache Onto Your Box

Agenda

The Problem

Monitoring Your Server

How Many Processes?

Selecting Your MPM

Spinning Locks

Tuning Tips

Further Reading

Page 3: Shoehorning Apache Onto Your Box

The Problem

Limited Resources

Work with what you have

How to get the most out of existing infrastructure

Page 4: Shoehorning Apache Onto Your Box

Monitoring Your Server

top

free

vmstat

Web server logs

SE Toolkit

mod_status

Generating Load

Page 5: Shoehorning Apache Onto Your Box

Top

Page 6: Shoehorning Apache Onto Your Box

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

Page 7: Shoehorning Apache Onto Your Box

Web Server Logs

ErrorLog– LogLevel: debug, info, notice, warn,

error, crit

Access Log: TransferLog or CustomLog– Common Log Format

Page 8: Shoehorning Apache Onto Your Box

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

Page 9: Shoehorning Apache Onto Your Box

SE Toolkit

Solaris-specific

Freely available monitoring toolkit

http://www.setoolkit.com/

Scriptable with own language

Page 10: Shoehorning Apache Onto Your Box

zoom.se

Page 11: Shoehorning Apache Onto Your Box

zoom.se: trouble

Page 12: Shoehorning Apache Onto Your Box

mod_status

Apache module

Outputs internal status of web server

Part of standard installation

Not turned on by default

Page 13: Shoehorning Apache Onto Your Box

Generating Load

For testing and sizing purposes Not necessarily realistic Several free programs available

– ab– http_load– Flood– JMeter– OpenSTA

Commercial offerings– Load Runner

Page 14: Shoehorning Apache Onto Your Box

How Many Processes?

MaxClients

Spinning Threads

Sizing MaxClients

Page 15: Shoehorning Apache Onto Your Box

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)

Page 16: Shoehorning Apache Onto Your Box

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

Page 17: Shoehorning Apache Onto Your Box

Top

Page 18: Shoehorning Apache Onto Your Box

Selecting Your MPM

Apache 2.0 only!

Processes and Threads

Differences between platforms

Thread-safety issues

Page 19: Shoehorning Apache Onto Your Box

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

Page 20: Shoehorning Apache Onto Your Box

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

Page 21: Shoehorning Apache Onto Your Box

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

Page 22: Shoehorning Apache Onto Your Box

Spinning Locks

Accept mutex locking

Why Apache locks

When it doesn’t

How to manipulate

Page 23: Shoehorning Apache Onto Your Box

Accept Mutex Locking

Lock mutex

Loop: polllisteners

Got conn?Accept

connection

Unlockmutex

Handleconnection

Multiple Listener Configuration (default)

Page 24: Shoehorning Apache Onto Your Box

Accept Mutex Locking

Lock mutex

Acceptconnection

Unlockmutex

Handleconnection

Single Listener Configuration

Page 25: Shoehorning Apache Onto Your Box

Accept Mutex Locking

Acceptconnection

Handleconnection

Single Listener Unserialized Accept (SLUA)

Page 26: Shoehorning Apache Onto Your Box

Tuning Tips

RAM and swap space

ulimit: files and processes

Turn off unused services and modules

Spread the load around

Page 27: Shoehorning Apache Onto Your Box

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

Page 28: Shoehorning Apache Onto Your Box

Spread the Load

Move to tiered model

Off-load services to other boxes– Images– SSL– Database– Application server

Development/Deployment schism

Page 29: Shoehorning Apache Onto Your Box

Tiered Model

Apache Tomcat DatabaseNet

Page 30: Shoehorning Apache Onto Your Box

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

Page 31: Shoehorning Apache Onto Your Box

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

Page 32: Shoehorning Apache Onto Your Box

Current Version

http://apache.org/~sctemme/Apcon2003/MO12/