Top Banner
1 Shoehorning Apache Onto Your Box System Sizing Tips Sander Temme <[email protected]>
36

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

Dec 27, 2015

Download

Documents

Harvey Booker
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Shoehorning Apache Onto Your Box System Sizing Tips Sander Temme.

1

Shoehorning Apache Onto Your Box

System Sizing Tips

Sander Temme <[email protected]>

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

2

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

machine,but it can still take a few hits

without going down.

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

3

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

4

Assumptions

• Limited Resources

• Work With What You Have

• You’re probably running Linux

• No Compiling or Recompiling!

• You can find httpd.conf

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

5

Purposes of Monitoring

• Observation

• Extrapolation

• Signals/Alerts

• Testing

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

6

Monitoring Your Server

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

7

Monitoring Apache

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

9

Other Monitoring Tools

• vmstat

• top

• free

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

10

Web Server Logs

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

• Access Log: TransferLog or CustomLog– Common Log Format

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

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

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

12

Configuring for Performance

• Configuring Apache

• Tuning the Operating System

• Scaling Your Site

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

13

Apache Configuration

• Process/Thread Management

• DNS Lookups

• Avoid .htaccess Files

• Disable unused modules

• Tune your App Tier

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

14

DNS Lookups

• HostnameLookups

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

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

15

.htaccess Files

• Per-directory configuration files

• Accessed for every request

• Best performance: AllowOverride none

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

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

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)

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

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

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

18

Top

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

19

Selecting Your MPM

• Apache 2.0 only!

• Processes and Threads

• Differences between platforms

• Thread-safety issues

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

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

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

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

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

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

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

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

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

24

System Tuning Tips

• RAM and swap space

• ulimit: files and processes

• Turn off unused services and modules

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

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

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

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

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

27

Scaling Your Site

• Vertically– Tiered Model

• Horizontally– Load Balancing

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

28

Scaling Vertically

ClientTCP/IP

TCP/IP

TCP/IP

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

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

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

30

Scaling Horizontally

Client

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

31

Tips

• Observe Before You Act

• Act on Monitoring Results

• Don’t Overload Your System

• Use A Staging Server

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

32

Q&A

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

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

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

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

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

35

Current Version

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

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

36

Thank You