Apache 2 Optimierung

Apache, Lighttpd, nginx, Cherokee
Post Reply
simcard
Posts: 21
Joined: 2005-08-22 19:29
 

Apache 2 Optimierung

Post by simcard »

Hi zusammen,

hab im Laufe der Woche relativ viel hier im Forum und bei google nach Tipps zur Optimierung von Apache und MySQL gesucht.

folgendes System: 2x AMD Opteron 246 und Vier Gigabyte Arbeitsspeicher. Momentan haben alle vhosts etwa 250.000 Seitenaufrufe am Tag, in Spitzenzeiten tausende User gleichzeitig.

Mir geht es im Detail um folgende Einstellungen:
##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
ServerLimit 1024
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 2500
MaxRequestsPerChild 500
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers 5
MaxClients 2500
MinSpareThreads 10
MaxSpareThreads 60
ThreadsPerChild 90
MaxRequestsPerChild 25000
</IfModule>


# perchild MPM
# NumServers: constant number of server processes
# StartThreads: initial number of worker threads in each server process
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# MaxThreadsPerChild: maximum number of worker threads in each server process
# MaxRequestsPerChild: maximum number of connections per server process
<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 25000
</IfModule>

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 25000
</IfModule>

# BeOS MPM
# StartThreads: how many threads do we initially spawn?
# MaxClients: max number of threads we can have (1 thread == 1 client)
# MaxRequestsPerThread: maximum number of requests each thread will process
<IfModule beos.c>
StartThreads 10
MaxClients 50
MaxRequestsPerThread 10000
</IfModule>

# NetWare MPM
# ThreadStackSize: Stack size allocated for each worker thread
# StartThreads: Number of worker threads launched at server startup
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# MaxThreads: Maximum number of worker threads alive at the same time
# MaxRequestsPerChild: Maximum number of requests a thread serves. It is
# recommended that the default value of 0 be set for this
# directive on NetWare. This will allow the thread to
# continue to service requests indefinitely.
<IfModule mpm_netware.c>
ThreadStackSize 65536
StartThreads 250
MinSpareThreads 25
MaxSpareThreads 250
MaxThreads 1000
MaxRequestsPerChild 0
MaxMemFree 100
</IfModule>

# OS/2 MPM
# StartServers: Number of server processes to maintain
# MinSpareThreads: Minimum number of idle threads per process,
# to handle request spikes
# MaxSpareThreads: Maximum number of idle threads per process
# MaxRequestsPerChild: Maximum number of connections per server process
<IfModule mpmt_os2.c>
StartServers 2
MinSpareThreads 5
MaxSpareThreads 10
MaxRequestsPerChild 0
</IfModule>

Hatte diese Einstellungen schon ein wenig geändert, damals nach Ã?nderungen aber auf meinem alten Root-Server hinterher Probleme mit Verbindungs-Timeouts gehabt, weshalb ich mich noch nicht traue hier Ã?nderungen abzuspeichern. Meine Frage, kann man bei der oben genannten Hardware und Nutzerzahlen in etwa abschätzen, welche Konfiguration etwas taugen würde, ohne dass dadurch Probleme auftauchen sollten? Denke mal, bei der Hardware sollte man locker 1 Million Seitenaufrufe am Tag erreichen können oder? In Spitzenzeiten ist die Load bei 20-40, was sich natürlich auf die Geschwindigkeit bemerkbar macht.

Wäre prima, wenn da jemand ein paar Tipps und Vorschlage hätte - vielen Dank im voraus! :)


grüße
David
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: Apache 2 Optimierung

Post by oxygen »

Welches MPM benutzt du denn, worker oder prefork?
simcard
Posts: 21
Joined: 2005-08-22 19:29
 

Re: Apache 2 Optimierung

Post by simcard »

gute Frage, der Server wurde von einer speziell dafür beauftragten Firma eingerichtet.. Im Apache Verzeichniss befindet sich aber eine httpd2-prefork.conf - weshalb ich mal von prefork ausgehen würde :)
braindead
Posts: 250
Joined: 2002-10-22 09:49
Location: vorm Rechner
 

Re: Apache 2 Optimierung

Post by braindead »

ich würde dir den worker mpm empfehlen, der ist schneller als der prefork. Einziges Hindernis könnten nicht threadsave Module sein (alte php versionen z.B.)

Ich glaube aber nicht das das dein Problem ist, wenn der Rechner nur 250000 Seitenaufrufe zu bewältigen hat dann sollte der sich eher langweilen. Vielleicht ist da noch was anderes in der config schief oder du hast suboptimal Scripte laufen.
simcard
Posts: 21
Joined: 2005-08-22 19:29
 

Re: Apache 2 Optimierung

Post by simcard »

Hi,

ok, danke für den Tipp. Aber was stell ich dann bei dem ein? Hab mal die komplette httpd.conf hochgeladen

http://85.10.211.205/httpd.conf

Auf dem Server läuft PHP 4.41, also ist aktuell. Daneben noch suPHP, Zend Optimizer in Verbindung mit eaccelerator.

grüße
David
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: Apache 2 Optimierung

Post by Roger Wilco »

simcard wrote:Aber was stell ich dann bei dem ein?
http://httpd.apache.org/docs/2.0/mpm.html#choosing
Post Reply