phpbar.de logo

Mailinglisten-Archive

[php] Statische Seiten erzeugen vs. Lastverteilung

[php] Statische Seiten erzeugen vs. Lastverteilung

Enrico Weigelt weigelt at metux.de
Mon Jun 7 12:54:30 CEST 2004


* Thomas Werner <wernerth at gmx.de> schrieb:

moin,

... auch wenn's mittlerweile schon etwas her ist ...

<snip>
> - Unsere Portale werden relauncht
> - laufen auf einem PHP basierten CMS (selbstgeschrieben)
> - Es soll bei dem CMS bleiben (bereits *sehr* viele Daten in der DB, 
>   au?erdem, die Redakteure sind es gewohnt)
> 
> Bisher laufen die Seiten mit Caching, sind aber trotzdem eher
> langsam, das System ist den Anforderungen einfach nicht mehr
> gewachsen. 

Wie wärs mit 'nem symetrischen Cluster ?
Also mehrere Systeme gleiche Systeme, die sich gegenseitig synchronisieren.

Ich habe hier z.b. eine Lösung implementiert, bei der einfach in 
jeder Table noch zwei zusätzliche attributes stecken: inode_id + mtime.
Die inode_id dient der clusterweit eindeutigen Identifizierung
(wird beim INSERT aus einer sequenz gezogen - die Nummernbereiche der
Sequences auf den einzelnen Hosts müssen so abgestimmt werden, daß
es keine Überlappungen gibt) und die mtime enthält immer den Zeitpunkt
der letzten Änderung (wird sinnigerweise mittels RULE aktuell gehalten).
Jede Minute geht dann ein poller drüber und fischt die neuen Records
raus, um sie zu den anderen hosts zu schicken. Geht sogar per email ;-)

Die Lösung ist zwar nicht die flotteste, aber für Sites mit relativ
niedrigem oder meist einseitigem Aktualisierungsverhalten reicht es 
locker aus.

Du kannst auf diese Wiese problemlos mehrere getrennte Server verwenden. 
Allenfalls bei sessions solltest Du aufpassen - die sollten nicht mit 
in die geclusterte DB rein, sondern lokal im Webserver abgelegt werden - 
der jeweilige User muß dann natürlich auch immer auf dem gleichen 
Server landen. Oder Du speicherst die Sessions in einer schnellen
(clusterfähigen) Datenbank, z.b. DNS.

Ansonsten kannst Du auch große Teile der Arrbeit in eine andere
Maschine verlagern, indem Du den gesamten Output von einer clusterfähigen
template-engine wie meinem pTemplate verwendest. Dann geschieht das
ganze Zusammensetzen der Website aus dem Templates in einer 
vorgeschalteten Maschine, was von der eigentlichen Anwendung eine
ganze Menge Last wegnimmt.

cu
-- 
---------------------------------------------------------------------
 Enrico Weigelt    ==   metux IT service

  phone:     +49 36207 519931         www:       http://www.metux.de/
  fax:       +49 36207 519932         email:     contact at metux.de
  cellphone: +49 174 7066481
---------------------------------------------------------------------
 -- DSL ab 0 Euro. -- statische IP -- UUCP -- Hosting -- Webshops --
---------------------------------------------------------------------

php::bar PHP Wiki   -   Listenarchive