+ All Categories
Home > Documents > 1 Shoehorning Apache Onto Your Box System Sizing Tips Sander Temme.

1 Shoehorning Apache Onto Your Box System Sizing Tips Sander Temme.

Date post: 27-Dec-2015
Category:
Upload: harvey-booker
View: 219 times
Download: 0 times
Share this document with a friend
36
1 Shoehorning Apache Onto Your Box System Sizing Tips Sander Temme <[email protected]>
Transcript

1

Shoehorning Apache Onto Your Box

System Sizing Tips

Sander Temme <[email protected]>

2

So, your web server machine may not be the fastest, shiniest

machine,but it can still take a few hits

without going down.

3

4

Assumptions

• Limited Resources

• Work With What You Have

• You’re probably running Linux

• No Compiling or Recompiling!

• You can find httpd.conf

5

Purposes of Monitoring

• Observation

• Extrapolation

• Signals/Alerts

• Testing

6

Monitoring Your Server

7

Monitoring Apache

9

Other Monitoring Tools

• vmstat

• top

• free

10

Web Server Logs

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

• Access Log: TransferLog or CustomLog– Common Log Format

11

Common Log Format172.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

12

Configuring for Performance

• Configuring Apache

• Tuning the Operating System

• Scaling Your Site

13

Apache Configuration

• Process/Thread Management

• DNS Lookups

• Avoid .htaccess Files

• Disable unused modules

• Tune your App Tier

14

DNS Lookups

• HostnameLookups

• Access Control– Bad: Deny from example.com– Good: Deny from 172.160.234.5

15

.htaccess Files

• Per-directory configuration files

• Accessed for every request

• Best performance: AllowOverride none

GET /dir1/dir2/restricted.html HTTP/1.0

16

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)

17

Sizing MaxClients

• Take total RAM

• Subtract OS allowance– look at free value without Apache, etc.

• Subtract external program allowance– JVM, cgi programs, MySQL?

• Divide by httpd process size– Read process size from top

18

Top

19

Selecting Your MPM

• Apache 2.0 only!

• Processes and Threads

• Differences between platforms

• Thread-safety issues

20

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

21

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 Native Posix Thread Library (NPTL) in 2.6

– NTPL already in RH 9, RHAS 3

22

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

23

Tune your App Tier

• Tomcat– Edit server.xml, tune minProcessors,

maxProcessors– Tune JVM (Heap, Garbage Collection)

• MySQL– Ships with various scenarios in support-files:

• my-{small,medium,large,huge}.conf

– PHP & prefork: every child makes a connection

24

System Tuning Tips

• RAM and swap space

• ulimit: files and processes

• Turn off unused services and modules

25

RAM and Swap

• Swap is disk-based Extension of RAM

• Excessive swapping kills performance

• Tune MaxClients

• Never have more memory than swap– Upgrade RAM -> add more swap space

26

ulimit

• Per-process resource limits• Built-in command of sh, bash• Important limits:

– processes (-u)– open files (-n)

• Set in invoking shell• Code in Apache 2.0 startup script

– ulimit -S -n `ulimit -H -n`

• Linux: /etc/security/limits.conf

27

Scaling Your Site

• Vertically– Tiered Model

• Horizontally– Load Balancing

28

Scaling Vertically

ClientTCP/IP

TCP/IP

TCP/IP

29

Scaling Vertically

• Move Services to Other Hosts• Pros:

– Less resource contention– Specialized hardware– Scale tiers individually

• Cons:– Development/Deployment harder– More hosts to manage

30

Scaling Horizontally

Client

31

Tips

• Observe Before You Act

• Act on Monitoring Results

• Don’t Overload Your System

• Use A Staging Server

32

Q&A

33

Further Reading

• Ryan B. Bloom, Apache Server 2.0: The Complete Reference, 2002 McGraw Hill Osborne; ISBN 0-07-222344-8

• Ben Laurie and Peter Laurie, Apache: The Definitive Guide (3rd Edition), 2002 O’Reilly & Associates; ISBN 0596002033

• 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

• Ken Coar and Rich Bowen, Apache Cookbook, 2003 O’Reilly & Associates; ISBN 0596001916

34

Conference Roadmap

• T11: Scalable Internet Architectures• MO04: Advanced Topics in Module Design• TU02: Apache as a Reverse Proxy• TU05: Building Scalable Websites with Perl• TU13: Feedster at 18 Months Old• TU17: Migrating the BBC website to Apache • WE08: Apache Performance• WE19: Powering High-volume web sites with

Lenya/Cocoon and mod_cache

35

Current Version

http://apache.org/~sctemme/Apcon2004/MO14/

36

Thank You


Recommended