Apache + PHP + APC - wie viel Reserve im Cache?



marce

Well-Known Member
Hallo zusammen,

gegeben ist ein Webserver mit 4GB Ram, Apache + PHP + APC - der Server hostet eine Webanwendung, basierend auf Zend-Framework. Dank Zend-Framework ist das die erste Webanwendug, die bei uns zwingend APC erfordert.

Aktuell sind für APC 128MB als 1 Segment konfiguriert. Nach ein paar Stunden Uptime wird davon lt. apc.php ca. 20MB als File-Cache verwendet, UserCache wird nicht verwendet (und ist auch nicht geplant). Mehr als ca. 30MB habe ich dort noch nie gesehen - eine Statistik habe ich darüber aber noch nicht erstellt.

In der reichhaltigen Doku zu APC und den tausenden Tutorials findet sich viel - aber eine Frage konnte ich mir daraus noch nicht beantworten: Wie viel Reserve sollte ich denn so einplanen für einen stabilen und unbeeinträchtigten Betrieb der Seite?

Kann ich den Cache-Wert "recht knapp" an den maximal verwendeten Wert heranfahren (also z.B. bei max 30MB -> 32MB einstellen) oder empfiehlt es sich, da x% oder gar konkrete MBs an Reserve zu haben?

Für ein paar Hinweise wäre ich dankbar.
 
Kommt darauf an, wie viel Speicher Deine Server-Programme bereits fressen. ;)
Aber Dir ist schon klar, dass Du Dir hier über Werte von unter 1% des Gesamtspeichers den Kopf zerbrichst?

huschi.
 
Im konkrekten Fall ja - klar. Und wir reden auch noch über shared-Speicher, der nur 1x belegt wird...

Aber denken wir mal weiter - ich hätte da noch ein paar andere Server, auf denen ich das APC-Modul ja dann auch installieren könnte und da ist der entsprechende Speicherbedarf sicherlich höher - alleine weil da schon mal ein paar WP, T3, div. Sonderkonstrukte und uch das eine oder andere Forum drauf laufen.

Ich bin halt noch aus der Zeit, wo man Systeme möglichst genau (und minimal) nach den Anforderungen konzipiert hat - und wenn ich mir dann so ein System wie APC anschaue und wie es sich im Betrieb verhält, dann stellen sich mir diesbezüglich halt ein paar Fragen.

Z.B. fragmentiert der Speicher von APC ja teilweise - und er wird wohl auch defragmentiert - wie passiert dies? Werden entsprechende Bereich einfach gelöscht und neu angelegt oder wird das intern umgeshiftet? Dafür wäre dann temp. der doppelte Speicher des entsprechenden Fragments notwendig - und das wäre dann durchaus etwas, was man bei der entsprechenden Dimensionierung der verfügbaren Reserve miteinplanen sollte.

Klar - im konkreten Fall stören die paar MB nicht, die Kisten haben genügend Reserven für APC, Filesystemcache und was sich da sonst so rumtreibt.
Wenn ich aber halt weiter denke, dann komme ich schon in Bereiche, in denen es sich eben anders verhalten kann - und da würde es mich eben interessieren, ob es die entsprechenden Best-Practices gibt bzw. wie ihr das so haltet.

Ggf., bei ganz viel Muße schaue ich mal in de Quellcode von APC rein - mal sehen, wie dort GC und Defragmentierung organisiert sind. Spaß ist sicherlich was anderes und sicherlich dann auch über's Ziel hinausgeschossen, aber in anderen Bereichen schaut man sich die ideale Dimensionierung von Caches ja auch mehr als einmal an...
 
Back
Top