Shoehorning Apache Onto Your Box

Download Report

Transcript Shoehorning Apache Onto Your Box

Shoehorning Apache Onto Your Box
System Sizing Tips
Sander Temme <[email protected]>
So, your web server machine may not be
the fastest, shiniest machine,
but it can still take a few hits without going
down.
Assumptions
3
•
•
•
•
•
Limited Resources
Work With What You Have
You’re probably running Linux
No Compiling or Recompiling!
You can find httpd.conf
Purposes of Monitoring
4
•
•
•
•
Observation
Extrapolation
Signals/Alerts
Testing
Monitoring Your Server
5
Monitoring Apache
6
Monitoring: Nagios
7
Other Monitoring Tools
8
• vmstat
• top
• free
Web Server Logs
9
• ErrorLog
– LogLevel: debug, info, notice, warn, error, crit
• Access Log: TransferLog or CustomLog
– Common Log Format
10
Common Log Format
172.16.2.91
172.16.2.91
172.16.2.91
172.16.2.91
172.16.2.91
-
-
[16/Nov/2003:15:23:27
[16/Nov/2003:15:23:28
[16/Nov/2003:15:23:28
[16/Nov/2003:15:23:29
[16/Nov/2003:15:23:34
-0800]
-0800]
-0800]
-0800]
-0800]
"GET
"GET
"GET
"GET
"GET
/~sctemme/ HTTP/1.1" 200 1446
/~sctemme/css/doc.css HTTP/1.1" 200 167
/~sctemme/css/menu.css HTTP/1.1" 200 623
/favicon.ico HTTP/1.1" 404 283
/~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
Configuring for Performance
11
• Configuring Apache
• Tuning the Operating System
• Scaling Your Site
Apache Configuration
12
•
•
•
•
•
•
Process/Thread Management
DNS Lookups
Avoid .htaccess Files
Disable unused modules
Tune your App Tier
Cache if you Can
DNS Lookups
13
• HostnameLookups
• Access Control
– Bad: Deny from example.com
– Good: Deny from 172.160.234.5
.htaccess Files
14
• Per-directory configuration files
• Accessed for every request
• Best performance: AllowOverride none
GET /dir1/dir2/restricted.html HTTP/1.0
MaxClients
15
•
•
•
•
•
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
16
• 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
Top
17
Tune your App Tier
18
• 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
Cache your Content
19
• Dynamic Content is Expensive
• Static Content is Cheap
• Don’t Regenerate the Same Page
– Cache it!
– Wiki, Blog, Catalogs, …
• Example: wiki.apache.org
System Tuning Tips
20
•
•
•
•
RAM and swap space
ulimit: files and processes
Turn off unused services and modules
Patch your OS
RAM and Swap
21
•
•
•
•
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
ulimit
22
•
•
•
•
•
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
Example: ajax.apache.org
23
• 4xItanium CPU HP Integrity Server, 8Gb RAM
• RHEL 3.0
• www.apache.org, most TLPs, JIRA, Bugzilla, Wiki
• Very beefy machine
• Does not perform well
– Especially disk access
•
•
•
•
•
Upgrade to RHEL 4.0? (future)
JIRA Upgrade Helped
Cache for Wiki Helped
Wiki under mod_pyton? (future?)
…
Scaling Your Site
24
• Vertically
– Tiered Model
• Horizontally
– Load Balancing
Scaling Vertically
25
Client
TCP/IP
TCP/IP
TCP/IP
Scaling Vertically
26
• Move Services to Other Hosts
• Pros:
– Less resource contention
– Specialized hardware
– Scale tiers individually
• Cons:
– Development/Deployment harder
– More hosts to manage
Scaling Horizontally
27
Client
Tips
28
•
•
•
•
Observe Before You Act
Act on Monitoring Results
Don’t Overload Your System
Use A Staging Server
Q&A
Further Reading
30
•
•
•
•
•
•
•
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
Conference Roadmap
31
•
•
•
•
•
•
T20:
WE04:
WE09:
TH01:
TH17:
TH21:
•
•
FR05:
FR09:
Scalable Internet Architectures
QoS management of Internet services
Troubleshooting Apache configurations
Scaling Apache 2.x to > 20,000 concurrent downloads
Caching, Tips for Improving Performance
Powering High-volume web sites with
Lenya/Cocoon and mod_cache
Improving Web Performance with Dynamic Compression
Clustering and load balancing using mod_proxy
Current Version
http://apache.org/~sctemme/ApconEU2005/WE05/
Thank You
Backup Slides
Selecting Your MPM
35
•
•
•
•
Apache 2.0 only!
Processes and Threads
Differences between platforms
Thread-safety issues
Processes and Threads
36
• 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
37
•
•
•
•
•
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
Thread-safety
38
• 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