Apache Tuning für IMG-Server

klamm

Registered User
Ich habe mir einen Strato-Rootserver mit unlimited Traffic zugelegt (P4 3GHZ, SUSE Linux 9.3, Confixx 3.0), den ich gerne als reinen Grafikserver verwenden will. D.h. es werden sehr viele kleine Bildchen geladen. Da bei mir immer so um die 3000 User on sind, gibt das massig Apache-Zugriffe ...

Kann mir da jemand Tipps geben, wie ich die Variablen in der conf am besten anpasse für solch einen Fall? Ich dachte da so an viele MaxClients und wenig/keinen Keepalive, damit man möglichst viele Grafiken parallel ziehen kann.

Momentan isses so eingestellt
/etc/apache2/server-tuning.conf
Code:
<IfModule prefork.c>
        # number of server processes to start
        StartServers         6
        # minimum number of server processes which are kept spare
        MinSpareServers      5
        # maximum number of server processes which are kept spare
        MaxSpareServers     10
        # maximum number of server processes allowed to start
        MaxClients         280
        # maximum number of requests a server process serves
        MaxRequestsPerChild  0
</IfModule>
[...]
KeepAlive On
MaxKeepAliveRequests 5000
KeepAliveTimeout 5

Der Load ist zwar bei 0,01 durchgehend, aber es laufen an die 350 Prozesse und man wird bei den Grafiken merklich gequeuet. Hab auch noch nen anderen IMG-Server ohne apache2 mit 280 MaxClients und da läuft alles wie geschmiert. Ist evtl. dieser prefork mode nix für diesen Zweck und wäre worker besser?
 
Nach meiner Erfahrung sind diese hochausgelasteten Apache schwierig zu Konfigurieren. In Deinem Fall würde ich auf jeden Fall 'KeepAlive Off' setzten.
Denn das hält nur unnötige Verbindungen offen und Apache-Clients unbenutzt.

Ansonsten noch:
ServerLimit 300
MaxClients 300
MaxRequestsPerChild 100

Falls immer die selben Bilder gezogen werden, dann könnte man auch den Apache-Cache etwas erhöhen (bzw. überhaupt einschalten).
Du solltest auch darauf achten, daß die Bilder (sofern sie sich nicht verändern) eine längere Expirence im Header bekommen, was die Anfragen etwas runterschraubern sollte.

Falls die Bilder über PHP erzeugt werden, könntest Du auch an der php.ini evtl. etwas beschleunigen. Speicher genauer bemessen, einen PHP-Beschleuniger nutzten, etc.

Der Worker-MPM ist übrigends für PHP-Anwendungen nicht zu empfehlen.
Für reine, fertige Bilder, könnte er tatsächlich schneller sein.

huschi.
 
Dein MaxSpareServers ist IMHO zu niedrig.
Warum überhaupt Apache2 wenn es nur statische Bilder sind? Für sowas gibts schnelleres...
 
HornOx said:
Dein MaxSpareServers ist IMHO zu niedrig.
Warum überhaupt Apache2 wenn es nur statische Bilder sind? Für sowas gibts schnelleres...
hm weil das halt grad aufm strato-image drauf war ....
ich bin nich so der linux freak, dass ich da was anderes sinnvoll zum laufen bekäme. :(

thx aber für die tipps. das "keepalive off" hat schon einiges gebracht. die spares hab ich auch noch etwas hochgestellt. jetzt läufts recht zufriedenstellend.
 
klamm said:
die spares hab ich auch noch etwas hochgestellt.
Die MaxSpareServers ist nur eine Direktive zur 'Müllentsorgung'. Wenn ein Server unter Dauerlast steht, so kommt der Bereich für diese Einstellung eh nie zum arbeiten.

Nochwas:
<MOD>
Bitte Punkt 3 der Boardregeln beachten.
Danke.
</MOD>

huschi.
 
Möglicherweise bietet sich in deinem Fall auch der Einsatz eines Reverse Proxy's an. Dieser cached - analog zu einem normalen Proxy - Client-Anfragen auf deinen Webserver und kann Anfragen auf den gleichen Content recht schnell aus seinem Cache beantworten.

In der Regel setzt man Reverse Proxies allerdings auf separaten Machinen auf, damit sich die Last auch auf Seiten der Hardware verteilt. Inwieweit dir das im Falle deines 1-Server-Netzwerks bei Strato hilft, kann ich dir nicht genau beantworten. Dennoch gilt in deinem Fall: je mehr du cachen kannst*, umso besser für dich.

Übrigens verwenden bestimmte Bilder- und Videoserver aus dem...ahm... "kommerziellen" Bereich sehr oft den kostenpflichtigen Zeus-Webserver, da er unter hoher Last besser skaliert als Apache.


*dies kann wie schon gesagt ein PHP-Beschleuniger, Apache-Cache (habe ich selbst nie verwendet), oder eine andere Variante wie ein Reverse Proxy sein.
 
Back
Top