Shoehorning apache onto your box
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

Shoehorning Apache Onto Your Box PowerPoint PPT Presentation


  • 44 Views
  • Uploaded on
  • Presentation posted in: General

Shoehorning Apache Onto Your Box. System Sizing tips. Sander Temme <[email protected]>. 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

Download Presentation

Shoehorning Apache Onto Your Box

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Shoehorning apache onto your box

Shoehorning Apache Onto Your Box

System Sizing tips

Sander Temme <[email protected]>


Agenda

Agenda

  • The Problem

  • Monitoring Your Server

  • How Many Processes?

  • Selecting Your MPM

  • Spinning Locks

  • Tuning Tips

  • Further Reading


The problem

The Problem

  • Limited Resources

  • Work with what you have

  • How to get the most out of existing infrastructure


Monitoring your server

Monitoring Your Server

  • top

  • free

  • vmstat

  • Web server logs

  • SE Toolkit

  • mod_status

  • Generating Load


Shoehorning apache onto your box

Top


Free and vmstat

free and vmstat

[[email protected] sctemme]$ free

total used free shared buffers cached

Mem: 635080 601288 33792 0 110824 301084

-/+ buffers/cache: 189380 445700

Swap: 1315400 76 1315324

[[email protected] 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


Web server logs

Web Server Logs

  • ErrorLog

    • LogLevel: debug, info, notice, warn, error, crit

  • Access Log: TransferLog or CustomLog

    • Common Log Format


Common log format

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


Se toolkit

SE Toolkit

  • Solaris-specific

  • Freely available monitoring toolkit

  • http://www.setoolkit.com/

  • Scriptable with own language


Zoom se

zoom.se


Zoom se trouble

zoom.se: trouble


Mod status

mod_status

  • Apache module

  • Outputs internal status of web server

  • Part of standard installation

  • Not turned on by default


Generating load

Generating Load

  • For testing and sizing purposes

  • Not necessarily realistic

  • Several free programs available

    • ab

    • http_load

    • Flood

    • JMeter

    • OpenSTA

  • Commercial offerings

    • Load Runner


How many processes

How Many Processes?

  • MaxClients

  • Spinning Threads

  • Sizing MaxClients


Maxclients

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

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


Shoehorning apache onto your box

Top


Selecting your mpm

Selecting Your MPM

  • Apache 2.0 only!

  • Processes and Threads

  • Differences between platforms

  • Thread-safety issues


Processes and threads

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

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

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


Spinning locks

Spinning Locks

  • Accept mutex locking

  • Why Apache locks

  • When it doesn’t

  • How to manipulate


Accept mutex locking

Accept Mutex Locking

Lock mutex

Got conn?

Loop: poll

listeners

Accept

connection

Unlock

mutex

Handle

connection

Multiple Listener Configuration (default)


Accept mutex locking1

Accept Mutex Locking

Lock mutex

Accept

connection

Unlock

mutex

Handle

connection

Single Listener Configuration


Accept mutex locking2

Accept Mutex Locking

Accept

connection

Handle

connection

Single Listener Unserialized Accept (SLUA)


Tuning tips

Tuning Tips

  • RAM and swap space

  • ulimit: files and processes

  • Turn off unused services and modules

  • Spread the load around


Ulimit

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

Spread the Load

  • Move to tiered model

  • Off-load services to other boxes

    • Images

    • SSL

    • Database

    • Application server

  • Development/Deployment schism


Tiered model

Tiered Model

Database

Tomcat

Net

Apache


Further reading

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

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


Current version

Current Version

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


  • Login