Masshosting mit Apache2

scoop

New Member
Hallo,

ich habe folgende Hardware..

intel quad core xeon
16gb ram
Debian u. Apache2

Ich würde den apache gerne so optimieren, dass ich sehr viele Anfragen abfangen kann ohne dass der Server swapen muß.

Meine momentanen einstellungen:

Code:
############################################################
# Timeout: The number of seconds before receives and sends time out.
 
Timeout 300
 
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
 
KeepAlive On
 
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
 
MaxKeepAliveRequests 100
 
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
 
KeepAliveTimeout 3
 
##
## 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>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 250
MaxRequestsPerChild 10000
</IfModule>
 
# pthread MPM
# StartServers ......... initial number of server processes to start
# MaxClients ........... maximum number of server processes allowed to start
# 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>
ThreadLimit 50
ServerLimit 30
StartServers 5
MaxClients 1500
MinSpareThreads 30
MaxSpareThreads 50
ThreadsPerChild 50
MaxRequestsPerChild 0
</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 (then it dies)
<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
AcceptMutex fcntl
</IfModule>
 
############################################################


Sind die einstellungen sinnvoll?


Gruß
scoop
 
Last edited by a moderator:
Wieso nehmt ihr eigentlich Apache her wenn Lighttpd besser für sowas ist? Bzw. es gibt noch einige andere Webserver die für solche Vorhaben besser sind.

Das wichtigste für geringen Ramverbrauch beim Apache ist es alle nicht gebrauchten Module rauszuwerfen.
 
Wieso nehmt ihr eigentlich Apache her wenn Lighttpd besser für sowas ist? Bzw. es gibt noch einige andere Webserver die für solche Vorhaben besser sind.

Also diese Aussage ist verdammt gewagt....
Wobei es ja meistens nicht nur auf Performance ankommt.
 
Vom Ramverbrauch her finde ich dass lighttpd deutlich unter dem Niveau von Apache liegt. Und genau dass war doch gefragt.
 
hi

@traced
MySQL ist im Spiel, allerdings auf einem anderen Server. Auf diesem Server ist nur ein apache...


lighttp hatte ich schon mal genutzt, allerdings ist er mir persönlich nicht sonderlich sympatisch. Das eine oder andere vom apache ist schon recht nützlich.

Viele Anfragen müßten mit einer solch großen Kiste und einem apache2 eigetnlich auch möglich sein. Ist blos die Frage, wie man ihn am besten optimiert.
Momentan hab ich leider das Problem, dass er zum Antworten einfach viel zu lange braucht, weil er vermutlich einfach maßlos überlastet ist.


Gruß
 
Last edited by a moderator:
Handelt es sich um statischen oder dynamischen Inhalt? Sonst kannst du schonmal Caching einsetzen. Aber wie gesagt deaktivier erstmal alle unnötigen Apachemodule wenn du noch welche laufen hast.
 
Jetzt sind nur noch die nötigsten Module eingebunden.

Der Inhalt ist lächerlich wenig. An sowas kanns eigentlich fast nicht liegen (denk ich).

Ich glaube eher, dass es noch ein Problem mit den Prozessen und dergleichen ist.


Wir haben halt so 400-900 Zugriffe gleichzeitig.
 
Last edited by a moderator:
Nur 2 Zeilen werden dynamisch geladen, da kann man aber nicht viel falsch machen... :)
 
Last edited by a moderator:
Die Module hab ich auch genau diese paar drinnen.

alias auth_basic authn_file auth_token authz_default authz_groupfile authz_host authz_user autoindex cgi dir env headers mime negotiation php4 rewrite setenvif status


Also nur das übliche und noch des eine oder andere zusätzlich, was halt gebraucht wird.
 
Last edited by a moderator:
Die cgi könnte ich rausnehmen, des stimmt.

Die Anderen wollte ich drinnen lassen, falls ich sie noch mal brauch. Die dürften doch nicht so sehr stören oder?
 
Last edited by a moderator:
kurz mal eine Zwischenfrage.

Wenn ich einen www.domain.de/test.zip so zum Download bereit stelle, dann bricht ja der Download auch ab, wenn ich den apache neu starte.

Somit läuft der Download ja dann auch über den apache. Ich hab schon recht oft auch einen Download auf der Seite.
Kann es auch daran liegen? Wobei so ein Download ja dann nicht im Arbeitsspeicher liegt oder?
 
Last edited by a moderator:
Über was soll das sonst laufen wenn nciht über den Apache ;) Das is dein Webserver und das ist eine Webserveradresse. Wenn du also viele Downloads verteilst schlägt das natürlich auch auf den Apache.
 
Das ist klar, aber da wird ja nicht die ganze Datei in den Arbeitsspeicher gelegt.
Es gibt 3 Dateien, die zwischen 50 und 100MB groß sind. Die blockieren doch nicht bei jedem Download immer die entsprechende Größe im Arbeitsspeicher oder?
 
Last edited by a moderator:
Die blockieren jeweils zweistellige MBs durch den entsprechenden Apache-Prozess, welcher all deine Module mitschleppt. Und deshalb ist mod_php für Seiten mit viel Verkehr nicht zu empfehlen. Besser FastCGI, das spart 1. den Speicher des PHP-Moduls, und 2. kann man dann das worker-MPM verwenden und braucht nicht einen eigenen Prozess für jeden Client. Oder gleich lighttpd oder LSWS, wie schon empfohlen.
 
Last edited by a moderator:
iIch hab jetzt mal wirklich alle Module rausgenommen, die ich wirklich momentan nicht brauch.

Leider ist jeder apache Prozess maximal 7,3MB groß... bei 447 geöffneten Verbindungen... (sind grad momentanaufnahmen..)

bei 16GB RAM müßte des eigetnlich lächerlich sein... oder täusch ich mich da?
 
Last edited by a moderator:
Back
Top