Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver...

29
Webserver Performance Tuning Jan Kneschke [email protected] incremental

Transcript of Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver...

Page 1: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Webserver Performance TuningJan Kneschke

[email protected]

incremental

Page 2: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Intro

Manche Webangebote werden erfolgreicher als ihre

Schöpfer je eingeplant haben. Der Apache gibt sich die

Kugel, das PHP wartet auf die Datenbank und von den 2

Gb RAM ist auch nicht mehr viel über.

Webserver Performance Tuning – p.1/28

Page 3: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Über den Referenten

Dipl.-Ing. (FH) Jan Kneschke

seit 2000 im PHP-Umfeld tätig (NetUSE AG)

nach dem Abschluß des Studiums (TechnischeInformatik) Gründung der Firma incremental, die sichauf die Entwicklung von High-Performance Lösungenspezialisiert hat

Webserver Performance Tuning – p.2/28

Page 4: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Übersicht

Grundszenario

ProblemstellenSpeicherCPUNetzwerk

Meßverfahren und -werkzeuge

Lösungsansätze

Webserver Performance Tuning – p.3/28

Page 5: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Grundszenario

Appliance Services

Vorgabengeringe Kosten> 100 Kunden pro Rechnerhoher Datenbank Load

Realisierungeine CPU1 Gb RAMStandard LAMP

Webserver Performance Tuning – p.4/28

Page 6: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Grundszenario

Hardware + Software

HardwareIntel P4 2 GHz1GByte RAMRAID 10 - 40 Gbyte100BaseT

Anbindung ans Internet34 Mbit/s

SoftwareLinux 2.4.22Apache 1.3.x (latest)MySQL 4.1.x (latest)PHP 4.3.x (latest)

Webserver Performance Tuning – p.5/28

Page 7: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Das Problem

Slashdotting aka DDOS

worst case design

Wer Slashdot überlebt, überlebt auch einen DDOS

viele parallele User zur gleichen Zeit

lange Standzeiten der Verbindung

Webserver Performance Tuning – p.6/28

Page 8: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Das Problem

Die Folgen

volle Ausnutzung der Bandbreite

pro Connection besteht ein Apache Prozess

jeder Apache Prozess benötigt im Schnitt 1 Mb RAM

mod_php4 benötigt zusätzlich 3 Mb RAM proProzess

100 parallele User führen zu 400 Mb RAMVerbrauch, ohne daß etwas getan wurde

viele parallel laufende Prozesse verbrennen unnötigCPU-Zeit (Overhead)

Webserver Performance Tuning – p.7/28

Page 9: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Speicher

“Mehr Speicher ist nur durch noch mehr Speicher zuersetzen”

man kann nie genug Speicher haben

erst wenn man nicht mehr Speicher nachrüstenkann, lohnt die Suche nach Einsparpotenzialen imSpeicherbereich

Prozesse unter Linux ia32 können nur einenAdressraum von 2Gb verwalten

Threads laufen in einem Adressraum (MySQL)

Webserver Performance Tuning – p.8/28

Page 10: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Speicher

Einsparmöglichkeiten

httpd.confdeaktivieren aller unnötigen Module wie z.B.mod_proxymod_cgimod_negotiationmod_include

PHPnur die notwendigen Extensions

./configure --disable-all \--enable-...

Webserver Performance Tuning – p.9/28

Page 11: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Speicher

kein Apache

Apaches Modell: Pro Connection ein Worker Prozesserzeugt das Speicherproblem

single-process Webserver behandeln alleVerbindungen in einem Prozess

auch 10.000 parallele Verbindungen lassen sich somit 32 Mb RAM behandeln

thttpd, lighttpd, zeus

über das FastCGI Interface wird das PHPangebunden

Webserver Performance Tuning – p.10/28

Page 12: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

CPU

Caching

Caching der Ausgabe

bei einem Cache-Hit wird direkt der Cache-Inhaltausgegeben

PEAR::Cache_Lite, PEAR::Cache

Webserver Performance Tuning – p.11/28

Page 13: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

CPU

Caching - Beispielif (file_exists(‘‘cache.html’’) &&

file_mtime(‘‘cache.html’’) >file_mtime(‘‘comments.txt’’)) {

readfile(‘‘cache.html’’);exit(0);

} else {# generate output,# write output to cache.html,# send output to the browser

}

Webserver Performance Tuning – p.12/28

Page 14: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

CPU

Caching - Vor- / Nachteile

NachteileCaching erfordert ein KonzeptAbhängigkeiten-Modellierung kann sehr

aufwendig sein

VorteileCaching erzwingt ein Konzeptdrastische Reduzierung der CPU-Last

Webserver Performance Tuning – p.13/28

Page 15: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Netzwerk

Caching - HTTP

TimestampLast-Modified, If-Modified-Since

Entity TagsETag, If-None-Match

Webserver Performance Tuning – p.14/28

Page 16: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Netzwerk

Caching - Beispiel

initialer Request

HEAD / HTTP/1.0

HTTP/1.0 200 OKContent-Length: 4348Last-Modified: \Mon, 12 May 2003 12:54:17 GMT

[...]

Webserver Performance Tuning – p.15/28

Page 17: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Netzwerk

Caching - Beispiel

folgender Request

HEAD / HTTP/1.0If-Modified-Since: \Mon, 12 May 2003 12:54:17 GMT

HTTP/1.0 304 Not ModifiedContent-Length: 0[...]

Webserver Performance Tuning – p.16/28

Page 18: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Netzwerk

Output-Compression

HTTP - Accept-Encoding, Content-Encoding

alle Browser unterstützen Content-Encoding

reduziert Traffic bis um den Faktor 10

Webserver Performance Tuning – p.17/28

Page 19: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Netzwerk

Output-Compression - BeispielHEAD / HTTP/1.0Accept-Encoding: deflate

HTTP/1.0 200 OKContent-Length: 1288Content-Encoding: deflate[...]

Webserver Performance Tuning – p.18/28

Page 20: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Netzwerk

Output-Compression - Aktivierung

Apache - mod_gzip

PHP - zlib.output_compression = “On”

Webserver Performance Tuning – p.19/28

Page 21: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Netzwerk

Output-Compression - Vor- / Nachteile

Vorteiledrastische Reduzierung des Trafficsschnellere Beantwortung der Requestshöhere Gesamtperformance

Nachteilebei PHP ohne Caches merkbar höhere CPU-Last

Webserver Performance Tuning – p.20/28

Page 22: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Analyse

Meßwerkzeuge

Load-Generatorenab, httpperf, http_load

Netzwerkmrtg, slurm

Speichervmstat, top, cat /proc/<pid>/status

CPUvmstat, top

Webserver Performance Tuning – p.21/28

Page 23: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Analyse

Load-Generatoren

belasten einen Server mit möglichst vielen Request

bestimmen die Peak Leistung

4 Messungen sind notwendiglokal und über das äußere Netzmit geringem und mit hohem parallel Load

Webserver Performance Tuning – p.22/28

Page 24: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Analyse

Apache vs. lighttpd - static$ ab -n 10000 -c <concurrent> \http://192.168.2.10:<port>/testfile100k

Requests/sServer 50 500

Apache 697.25 544.07lighttpd 3277.61 2047.50

Peak-Durchsatz: 606 MByte/s bei -c 8 und -k

Webserver Performance Tuning – p.23/28

Page 25: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Analyse

ApacheBench (ab)[...]

Concurrency Level: 8

Time taken for tests: 0.177 seconds

Complete requests: 1000

Failed requests: 0

Broken pipe errors: 0

Keep-Alive requests: 1000

Total transferred: 102676000 bytes

Requests per second: 5649.72 [#/sec] (mean)

Time per request: 1.42 [ms] (mean)

Time per request: 0.18 [ms] (mean, across all ... )

Transfer rate: 580090.40 [Kbytes/sec] received

Webserver Performance Tuning – p.24/28

Page 26: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Analyse

Apache + mod_php4 vs. lighttpd + FastCGI - PHP$ ab -n 10000 -c <concurrent> \http://192.168.2.10:<port>/cgi.php

Server 50 500

Apache 969.93 779.42lighttpd 1376.65 1319.96

cgi.php: <?php print “12345”; ?>

Untersuchung der Startup-Time, wichtig fürCache-Hits

turckmm-cache 2.4.3 aktiv

Webserver Performance Tuning – p.25/28

Page 27: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Analyse

Speicherbedarf$ cat /proc/<pid>/statusVmSize: 8024 kB # auch in topVmLck: 0 kBVmRSS: 3384 kB # auch in topVmData: 812 kBVmStk: 40 kBVmExe: 220 kBVmLib: 4792 kB

Webserver Performance Tuning – p.26/28

Page 28: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Analyse

Speicherbedarf

swapoff -a

rcapache stop

top

182096 KBytes used with 100 apaches138935 KBytes used after killing apache43160 KBytes difference

430 kbyte for each apache process

Webserver Performance Tuning – p.27/28

Page 29: Webserver Performance Tuningjan.kneschke.de/.../talks/webserver-performance-tuning.pdfWebserver Performance Tuning – p.7/28 Speicher “Mehr Speicher ist nur durch noch mehr Speicher

Zusammenfassung

Design-Richtlinie

Das Netz ist der Flaschenhals

Folgen der gezeigten Ansätze

Reduzierung der Netzlast

Optimierung des Durchsatzes

Deutliche Erhöhung der Anfragen pro Sekunde

Absicherung der Erreichbarkeit beiSlashdot-Announcements

Webserver Performance Tuning – p.28/28